首页 > 其他分享 >退出功能与BaseServlet抽取

退出功能与BaseServlet抽取

时间:2023-03-01 14:58:11浏览次数:27  
标签:BaseServlet 抽取 request println IOException 退出 import servlet javax

退出功能

  

什么叫做登录了?session中有user对象。

实现步骤:

  1. 访问servlet,将session销毁
  2. 跳转到登录页面

 

 

 

 

 

 登录成功

 

 

 

 

 

 

 

 

 退出成功

 

代码实现:

     <span id="span_username"></span>
                <a href="myfavorite.html" class="collection">我的收藏</a>
                <a href="javascript:location.href='exitServlet';">退出</a>
            </div>

 

package cn.itcast.travel.web.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/exitServlet")
public class ExitServlet extends HttpServlet {


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.销毁session
        request.getSession().invalidate();
            //2.跳转登录页面
        response.sendRedirect(request.getContextPath()+"/login.html");

    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

BaseServlet抽取

      优化Servlet

        减少Servlet的数量,现在是一个功能一张Servlet,将其优化为一个模块一个Servlet,相当于在数据库中一张表对应一个Servlet,在Servlet中提供不同的方法,完成用户的请求 

 

 

 

 

 

 

·

 

 

谁调用我?我代表谁

 

 

 

package cn.itcast.travel.web.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/user/*") ///user/add/user/find
public class UserServlet extends BaseServlet {



    public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("userServlet的add方法");
    }


    public void find(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("userServlet的find方法");

    }
}

 

 

package cn.itcast.travel.web.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/category/*")
public class CategoryServlet extends BaseServlet {


    public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("CategoryServlet的add方法");
    }


    public void find(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("CategoryServlet的find方法");

    }
}

 

package cn.itcast.travel.web.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

@WebServlet("/baseServlet")
public class BaseServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*System.out.println("baseServletd servlice的方法被执行了......");*/

        //完成方法分发
        //1.获取请求路径
        String uri = req.getRequestURI();   //  /user/add
        System.out.println("请求uri:"+uri); // /user/add

        //2.获取方法名称
        String methodName = uri.substring(uri.lastIndexOf('/') + 1);
        System.out.println("方法名称:"+methodName);
        //3.获取方法对象Method
        //谁调用我?我代表谁
        System.out.println(this);//UserServlet的对象  cn.itcast.travel.web.servlet.UserServlet@5e344e00

        try {
                //获取方法
            Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            //4.执行方法
            //暴力反射
            method.invoke(this,req,resp);
        } catch (NoSuchMethodException e) {
            throw new RuntimeException(e);
        } catch (InvocationTargetException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }


    }
}

 

 

 

翻译

搜索

复制

标签:BaseServlet,抽取,request,println,IOException,退出,import,servlet,javax
From: https://www.cnblogs.com/x3449/p/17168131.html

相关文章

  • 933~934 BaseServlet抽取,Userservlet&面路径改写
    优化Servlet目的减少Servlet的数量,现在是一个功能一个Servlet,将其优化为一个模块一个Servlet,相当于在数据库中一张表对应一个Servlet,在Servlet中提......
  • webpack--抽取公共文件配置
    使用方法:在webpackconfig的plugins属性里添加CommonsChunkPlugin实例即可。实例化的配置项「options」如下:name或者names:chunk的名称,如果是names数组,则相当......
  • 汇编语言学习_2_正确的退出方式
    第二节正确的退出方式翻译自:https://asmtutor.com/背景知识在Lesson1中成功学习了如何执行系统调用之后,现在需要学习内核中最重要的系统调用之一sys_exit。请注......
  • 05:控制流:for循环、while循环、guard else 提前退出
    正文for循环、while循环、guardelse提前退出/*for循环*/privatefunctestForLoop(){//1:遍历数组letnames=["Anna","Alex",......
  • 《黑马旅游网》综合案例六 BaseServlet抽取
    BaseServlet抽取减少Servlet的数量,现在是一个功能一个Servlet,将其优化成一个模块一个Servlet,相当于在数据库一张表对应一个Servlet,在Servlet中提供不同的方法,完成用户的......
  • MySQL登录,访问,退出操作
    查看MySQL的安装结果1)安装了WindowsService:MySQL80,并且已经启动。 2)安装了MySQL软件。安装位置为:C:\ProgramFiles\MySQL。 (MySQL文件下放的是软件的内容)3)安......
  • MySQL登录,访问,退出操作
    查看MySQL的安装结果1)安装了WindowsService:MySQL80,并且已经启动。 2)安装了MySQL软件。安装位置为:C:\ProgramFiles\MySQL。 (MySQL文件下放的是软件的内容)3)安......
  • vue 中对监听esc事件,退出全屏的问题解决
    vue的项目中使用了h5的全屏API,在使用esc键退出全屏时,默认调用“document.exitFullScreen()”直接退出,想要做监听并设置业务,需要监听屏幕size变化来出发事件mounte......
  • Ubuntu 11.04 启动 VMware 报错/自动退出解决方法
    Ubuntu11.04装上以后我装了个VMware-Workstation-Full-7.1.3-324285.x86_64 启动VMware报错BeforeyoucanrunVMware,severalmodulesmustbecompiledandloadedi......
  • BaseServlet抽取以及UserServlet&页面路径改写
    BaseServlet抽取减少Servlet的数量,现在是一个功能一个Servlet,将其优化为一个模块一个Servlet,相当于在数据库中一张表对应一个Servlet,在Servlet中提供不同的方法来完成用户......