重写servlet,可以获取不同的方法

public class BaseServlet extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");//处理响应编码
        request.setCharacterEncoding("UTF-8");
        
        /**
         * 1. 获取method参数,它是用户想调用的方法 2. 把方法名称变成Method类的实例对象 3. 通过invoke()来调用这个方法
         */
        String methodName = request.getParameter("method");
        Method method = null;
        /**
         * 2. 通过方法名称获取Method对象
         */
        try {
            method = this.getClass().getMethod(methodName,
                    HttpServletRequest.class, HttpServletResponse.class);
        } catch (Exception e) {
            throw new RuntimeException("您要调用的方法:" + methodName + "它不存在!", e);
        }
        
        /**
         * 3. 通过method对象来调用它
         */
        try {
        //方法执行,method.invoke(对象, 参数列表),相当于this.method(request,response) String result
= (String)method.invoke(this, request, response);// if(result != null && !result.trim().isEmpty()) {//如果请求处理方法返回不为空 int index = result.indexOf(":");//获取第一个冒号的位置 if(index == -1) {//如果没有冒号,使用转发 request.getRequestDispatcher(result).forward(request, response); } else {//如果存在冒号 String start = result.substring(0, index);//分割出前缀 String path = result.substring(index + 1);//分割出路径 if(start.equals("f")) {//前缀为f表示转发 request.getRequestDispatcher(path).forward(request, response); } else if(start.equals("r")) {//前缀为r表示重定向 response.sendRedirect(request.getContextPath() + path); } } } } catch (Exception e) { throw new RuntimeException(e); } } }

 

转载于:https://www.cnblogs.com/appium/p/10336679.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Servlet 中,不同的请求可以通过不同的 HTTP 方法来进行处理。以下是一些常见的 HTTP 方法和对应的处理方法: 1. GET 方法:用于获取资源或数据。可以通过重写 `doGet()` 方法来处理 GET 请求。 ```java @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理 GET 请求的逻辑 } ``` 2. POST 方法:用于提交数据或进行操作。可以通过重写 `doPost()` 方法来处理 POST 请求。 ```java @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理 POST 请求的逻辑 } ``` 3. PUT 方法:用于更新资源或数据。可以通过重写 `doPut()` 方法来处理 PUT 请求。 ```java @Override protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理 PUT 请求的逻辑 } ``` 4. DELETE 方法:用于删除资源或数据。可以通过重写 `doDelete()` 方法来处理 DELETE 请求。 ```java @Override protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理 DELETE 请求的逻辑 } ``` 5. 其他自定义方法:可以通过重写 `service()` 方法来处理其他自定义的 HTTP 方法。 ```java @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (request.getMethod().equals("CUSTOM")) { // 处理自定义的请求方法 } else { super.service(request, response); } } ``` 以上是一些常见的 HTTP 方法和对应的处理方法,你可以根据实际需求选择相应的方法来处理不同的请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值