在一个Servlet中处理多个请求方法
来源:互联网 发布:dns设置软件 编辑:程序博客网 时间:2024/06/05 14:49
1. 在一个Servlet中可以有多个请求处理方法!
2. 客户端发送请求时,必须多给出一个参数,用来说明要调用的方法
请求处理方法的签名必须与service相同,即返回值和参数,以及声明的异常都相同!
3. 客户端必须传递一个参数!
package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {// TODO Auto-generated method stub/* * 1.获取参数,识别用户想请求的方法 */String methodName = req.getParameter("method");if(methodName.equals("addUser")) { addUser(req,res);}else if(methodName.equals("editUser")) { editUser(req,res);}else if(methodName.equals("deleteUser")) {deleteUser(req,res);}else if(methodName.equals("loadUser")) {loadUser(req,res);}}public void addUser(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("addUser()...");}public void editUser(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("editUser()...");}public void deleteUser(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("deleteUser()...");}public void loadUser(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("loadUser()...");}}
service方法的参数与用户想调用的方法的参数一致
http://localhost:8080/day0213_1/AServlet?method=deleteUser
但是每添加一个新方法,service中就需要多加一个else if语句,作以下改进:
public void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {// TODO Auto-generated method stub/* * 1.获取参数,识别用户想请求的方法 */String methodName = req.getParameter("method");if(methodName==null || methodName.isEmpty()){throw new RuntimeException("没有传递method参数");}/* * 得到方法名称,通过反射调用方法 * 得到方法名,通过方法名得到Method类的对象! */Class c=this.getClass();Method method=null;try {method =c.getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);} catch (Exception e) {// TODO Auto-generated catch blockthrow new RuntimeException("您调用的方法"+methodName+"不存在!");} /* * 调用method表示的方法 */try {method.invoke(this, req,res);} catch (Exception e) {System.out.println("您调用的方法"+methodName+"内部抛出了异常");throw new RuntimeException (e);} }
0 0
- 在一个Servlet中处理多个请求方法
- 一个servlet处理多个请求
- 一个servlet处理多个请求
- 一个servlet处理多个请求
- 一个servlet处理多个请求 (利用反射获取方法)
- BaseServlet,让一个Servlet可以同时处理多个请求
- 一个servlet处理来自多个不同页面的请求!
- Struts2中一个Action多个请求处理方法的三种实现方式
- Struts2中一个Action多个请求处理方法的三种实现方式
- Servlet容器如何处理多个请求??
- Servlet如何处理多个请求访问?
- Servlet如何处理多个请求访问?
- 工具类积累(二)—— 一个Servlet处理多个URL请求
- BaseServlet思想(Struts2的思想), BaseServlet,让一个Servlet可以同时处理多个请求
- 五、用反射实现一个Servlet类里处理多个请求,不推荐重写service
- 映射的方式实现一个servlet类处理多个请求
- 一个servlet中通过反射动态调用多个方法
- 一个Action内包含多个请求处理方法的处理
- 虚拟内存与物理内存映射解析
- Oracle 12c 新特性---password expired 的用户会输出到alert日志中
- Hdu 2196 Computer 经典树形dp
- android web view
- 例题:数据统计
- 在一个Servlet中处理多个请求方法
- 2015年 年度总结
- JavaScript高级程序设计第三版笔记(基础部分)
- 七田式英语学习法的 7 条原则
- 复数的物理意义
- 2282: [Sdoi2011]消防 树的直径+二分答案
- shell 10进制转16进制输出
- 2016小感悟(一)
- 重点:用户画像