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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java原生方法,Java Servlet原生调用方法过程简化

發布時間:2023/12/20 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java原生方法,Java Servlet原生调用方法过程简化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

初學java web之后,了解了jsp跟Servlet交互的過程。

具體過程如下:

創建一個servlet,并重寫doPost和doGer方法

在MXL文件中配置servlet的接收請求的路徑

在jsp中請求該路徑

在servlet中寫一個方法,在doPost或者doGet方法中判斷傳遞過來的參數來實際調用哪一個方法

由上面步驟,我們會發現,如果在一個servlet中寫很多方法,那豈不是要寫很多判斷;

下面是我個人想的簡化上面過程的代碼,實現了不用寫判斷,直接根據路徑來實現請求的方法

第一步、實現Filter類,獲取請求路徑,判斷請求的是方法還是頁面,如果是頁面則返回index.jsp

public class FilterDemo implements Filter {

static Demo demo=null; //serlvet類

@Override

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain chian) throws IOException, ServletException {

// TODO Auto-generated method stub

HttpServletRequest req=(HttpServletRequest)arg0;//獲取request對象

HttpServletResponse resp=(HttpServletResponse)arg1;//獲取request對象

String uri = req.getRequestURI();

if (uri.indexOf(".jsp")<0) {

demo.doGet(req, resp);

}else{

resp.sendRedirect("../index.jsp");

}

}

@Override

public void init(FilterConfig arg0) throws ServletException {

demo=new Demo();

}

}

第二步、實現繼承servlet的Demo類

public class Demo extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doPost(req,resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//---加載類

try {

//假如請求路徑是 端口/項目名/Main/doPos2

//獲取請求路徑

String uri = req.getRequestURI();

//分割請求路徑

//分割之后就是{"",項目名,Main,doPos2}

String[] strs=uri.split("/");

//獲取項目名的后一個路徑

String str1=strs[2];

//獲取項目名的后兩個路徑 --假如路徑不存在,則返回404

String str2=strs[3];

//將包名和str1拼接路徑,將類加載--報錯則返回404

Class> c1=null;

c1 = Class.forName("com.xj.controller."+str1);

//獲取無參構造方法

Constructor> constructor;

constructor = c1.getConstructor();

//將私有暴露

constructor.setAccessible(true);

//獲取str2方法--報錯則返回404

Method dd=c1.getDeclaredMethod(str2,HttpServletRequest.class,HttpServletResponse.class);

dd.setAccessible(true);

//調用方法并傳遞參數

dd.invoke(constructor.newInstance(), req,resp); } catch (Exception e) {

resp.sendRedirect("../404.jsp");

}

}

}

第三步、實現具體的方法

protected void doPos2(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.sendRedirect("/FangTieBa/index.jsp");

}

上述方法重點在于利用反射獲取Servlet類和方法

總結

以上是生活随笔為你收集整理的java原生方法,Java Servlet原生调用方法过程简化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。