日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(二)用户相关操作

發(fā)布時間:2024/7/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (二)用户相关操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、導入jar包

見 http://pan.baidu.com/s/1dE9kMJZ

?

?

?二、導入c3p0并修改值

c3p0.driverClass=com.mysql.jdbc.Driver c3p0.jdbcUrl=jdbc:mysql://localhost:3306/store c3p0.user=root c3p0.password=123456

三、導入工具類

見 http://pan.baidu.com/s/1miutJXe

有關這些工具類的分析請轉向http://www.cnblogs.com/Michael2397/p/7633395.html

四、通用servet

1、我們可以直接重寫service方法即可,在service方法中寫上面的判斷代碼即可

以前
只定義一個Userservlet重寫doget和dopost例如添加用戶的時候以前:
/store/addUser現(xiàn)在: /store/user?method=add修改用戶的時候以前: /store/updateUser現(xiàn)在: /store/user?method=update 初步改進 在userservlet中doget方法中Stirng m=request.getParameter("method");if("add".equals(m)){add(HttpServletRequest,HttpServletResponse)}else if("update".equals(m)){update(HttpServletRequest,HttpServletResponse)}else if(){}
最終改進:
1、BaseServlet extends HttpServlet{} 2、在baseservlet中重寫service方法1.獲取請求的方法2.找到相應的子類 父類中的this代表的是子類Class clazz=this.getClass()3.子類調(diào)用方法通過方法名稱 獲取一個指定的方法 Method m=clazz.getMethod(方法名,HttpServletRequest.class,HttpServletResponse.class)方法執(zhí)行m.invoke(this,HttpServletRequest,HttpServletResponse); 3、其他的servlet繼承baseServlet ?

2、請求轉發(fā) 重定向 打印數(shù)據(jù)改進

以前
  
在servlet中 我們執(zhí)行方法之后無非 請求轉發(fā) 重定向 打印數(shù)據(jù) 請求轉發(fā) reuqest.getRequestDispatcher().forward()最終改進
繼續(xù)完善我們baseservlet中service: 在第3步,方法執(zhí)行返回值,現(xiàn)在我讓所有的方法都返回一個字符串 add update字符串代表的是請求轉發(fā)的路徑若該方法不轉發(fā)只需要返回一個nullString s
=(String)m.invoke(this,HttpServletRequest,HttpServletResponse);if(s!=null){reuqest.getRequestDispatcher(s).forward(...);}

五、創(chuàng)建通用servlet

BaseServlet只需要重寫service即可

1、新建Baseservlet

package com.louis.web.servlet;import java.io.IOException; import java.lang.reflect.Method;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 通用servlet*/ @WebServlet("/base") public class BaseServlet extends HttpServlet {@Overridepublic void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try {//1獲取子類,創(chuàng)建子類或調(diào)用子類的時候,this代表的是子類對象Class clazz = this.getClass();//2獲取請求方法String m = request.getParameter("method");//3獲取方法對象Method method = clazz.getDeclaredMethod(m, HttpServletRequest.class,HttpServletResponse.class);//4讓方法執(zhí)行,返回值為請求轉發(fā)的路徑String s = (String)method.invoke(this, request,response); //相當于 userservlet.add(request,response)//5判斷s是否為空if(s!=null) {request.getRequestDispatcher(s).forward(request, response);}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();throw new RuntimeException();} }}

2、配置web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><servlet><description></description><display-name>BaseServlet</display-name><servlet-name>BaseServlet</servlet-name><servlet-class>com.louis.web.servlet.BaseServlet</servlet-class></servlet><servlet-mapping><servlet-name>BaseServlet</servlet-name><url-pattern>/base</url-pattern></servlet-mapping>

<error-page> //配置錯誤頁面<error-code>500</error-code><location>/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/404.jsp</location></error-page></web-app>

3、添加500.jsp,404.jsp

?六、創(chuàng)建UserServlet

1、編寫UserServlet

package com.louis.web.servlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 和用戶相關的servlet*/public class UserServlet extends BaseServlet {public String add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("userServlet的add方法執(zhí)行了");return null;}}

2、配置web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><servlet><description></description><display-name>BaseServlet</display-name><servlet-name>BaseServlet</servlet-name><servlet-class>com.louis.web.servlet.BaseServlet</servlet-class></servlet><servlet-mapping><servlet-name>BaseServlet</servlet-name><url-pattern>/base</url-pattern></servlet-mapping> <servlet><description></description><display-name>UserServlet</display-name><servlet-name>UserServlet</servlet-name><servlet-class>com.louis.web.servlet.UserServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserServlet</servlet-name><url-pattern>/user</url-pattern></servlet-mapping><error-page><error-code>500</error-code><location>/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/404.jsp</location></error-page> </web-app>

3、在瀏覽器上驗證http://localhost:8080/store/user?method=add

?

user:通過web.xml得到執(zhí)行的是userServlet method=add:因為userServlet是繼承baseServlet,所以要先經(jīng)過baseServlet,通過反射執(zhí)行this.add方法(this指的是子類)

?

?

?

?

?

問題

問題1

解決:參考http://www.cnblogs.com/vivizhang/p/vivizhang.html

    因為eclipse默認添加的@WebServlet("/ServletDemo")與web.xml中的沖突,刪掉其中一個

2、this關鍵字在繼承中的使用

? 參考:http://www.cnblogs.com/Michael2397/p/7633932.html

3、web.xml配置

  參考:http://www.cnblogs.com/hxsyl/p/3435412.html

4、request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的區(qū)別

  參考:http://blog.csdn.net/uk8692/article/details/12865571

?

轉載于:https://www.cnblogs.com/Michael2397/p/7633847.html

總結

以上是生活随笔為你收集整理的(二)用户相关操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。