(三)登录功能

由于我的web.xml文件件中没有配置默认访问界面,tomcat会自动寻找index.html,但发现index.html也没有,就会访问index.jsp界面了

1. 编写index.jsp界面,令其自动访问登录界面:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: Joker
  Date: 2019/8/11 0011
  Time: 20:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<c:redirect url="login?method=getjsp"/>
<%--
<html>
<head>
    <title>Titletitle>
head>
<body>

<h1>Hello world!h1>

body>
html>
--%>

2. 在com.fitsoft.shop.action包下新建LoginServlet类,接收处理请求

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    private HttpServletRequest request;
    private HttpServletResponse response;

    //定义业务层对象
    @Resource
    private ShopService shopService;

    @Override
    public void init() throws ServletException {
        super.init();
        //获取Spring的容器,然后从容器中获取业务层对象
        ServletContext servletContext = this.getServletContext();
        WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
        shopService = (ShopService) context.getBean("shopService");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //跳转到登录界面
        String method = req.getParameter("method");
        if(method.equals("getjsp")){
            req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(req, resp);
        }
    }
}

利用@Resource注解来获取业务层对象,但是由于Servlet是没有交由Spring管理的,Spring是不会把对象注入给它的,所以@Resource注解并没有生效,因此我们在初始化的方法中根据Servlet的上下文对象获取Spring的上下文对象,然后根据name("shopService")来获取业务层对象,并且此时业务层对象中应该加入注解:

来保证这个对象被扫描,这时我们还用不到这个shopService,然后处理我们的请求,判断method中的值是不是index.jsp界面传过来的,如果是,就将请求转发至登录界面:

(三)登录功能_第1张图片

 

转载于:https://www.cnblogs.com/zqm-sau/p/11391248.html

你可能感兴趣的:((三)登录功能)