JSP模式实现登录页面---by wjf(2020.4.25)

前面我们的用户登录功能都是写在一个servlet中,servlet既要显示HTML页面,还要负责控制功能,这样子就显得代码复杂,而且也不能进行分工合作。
那么我们可以通过JSP页面来进行辅助,即JSP负责HTML页面的显示,servlet用来负责控制。

首先我们先对servlet进行配置

package cn.edu.mju.project1.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/login")
public class LoginController extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("login.jsp").forward(req,resp);//将数据转发到login.jsp
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //login.jsp提交到这里

        //进行控制,对其进行判断
        String loginName=req.getParameter("loginName");
        String loginPwd=req.getParameter("loginPwd");
        String validCode = req.getParameter("validCode");

        String saveCode = (String)req.getSession().getAttribute("code");

        String str = null;
        if(saveCode != null){
            if(saveCode.equals(validCode)){
                if("16".equals(loginName) && "1234".equals(loginPwd)){
                    str=loginName;
                    req.setAttribute("name",str);
                    req.getRequestDispatcher("main.jsp").forward(req,resp);//成功跳转到main.jsp页面
                }else{
                    loginFail(req,resp,"账号或密码错误");

                }
            }else{
                loginFail(req,resp,"验证码错误");

            }
        }else{
            loginFail(req,resp,"请输入验证码");

        }

    }
    private void loginFail(HttpServletRequest req, HttpServletResponse resp,String str) throws ServletException, IOException {
        req.setAttribute("msg",str);  //把错误信息通过req带过去
        req.getRequestDispatcher("fail.jsp").forward(req,resp); //校验失败后跳转到fail.jsp
    }


}

此时当我们访问客户端的时候就可以直接访问login这个servlet,servlet收到请求后会将数据转发到login.jsp

<%--
  Created by IntelliJ IDEA.
  User: Jeffrey
  Date: 2020/4/18
  Time: 17:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>

</head>
<body>
    <form action="./login" method="post">  <!--跳转到login-->
        登录名称:<input type="text" name="loginName"><br>
        登录密码:<input type="text" name="loginPwd"><br>
        验证码:<input type="text" name="validCode"><img src="./captche"><br>
        <input type="submit" value="登录">
        <input type="reset" value="取消">
    </form>

</body>
</html>

我们通过login.jsp来输入相关的信息,然后提交至login进行控制,在login的servlet中我们可以完成相应的判断实现成功页面以及失败页面的跳转。

这是成功页面的JSP代码:

<%--
  Created by IntelliJ IDEA.
  User: Jeffrey
  Date: 2020/4/25
  Time: 10:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
这是主界面,欢迎:<%=request.getAttribute("name")%>
</body>
</html>

这是失败的JSP代码:

<%--
  Created by IntelliJ IDEA.
  User: Jeffrey
  Date: 2020/4/25
  Time: 10:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
登陆失败,原因:<%=request.getAttribute("msg")%>   请重新<a href="login">登录</a>  <!--失败后重新跳转到login-->
</body>
</html>

总结:通过这种模式来实现登录页面可以发现比较的简洁,不然一个servlet要实现所有的功能相对来说会比较复杂,并且容易出错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值