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原生调用方法过程简化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ游戏 找茬脚本
- 下一篇: 杭电java期末试卷2015_2014年