(Java)MVC模式——实现输入验证码进行页面的跳转

一、代码如下
1.创建login.jsp

<%@ page import="com.sun.jndi.toolkit.url.UrlUtil" %>
<%@ page import="java.net.URLDecoder" %><%--
  Created by IntelliJ IDEA.
  User: Chen
  Date: 2020/4/13
  Time: 16:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8"  %>
<html>
<head>
    <title>Title</title>
</head>
<body>
        <%
            String err =request.getParameter("err");
            if (err !=null) {
                err = URLDecoder.decode(err, "UTF-8");
                %>
                <%=err%>
        <%
            }
        %>

        <form action="./login" method="post">
            登入名称:<input type="text" name="loginName"><br>
            登入密码:<input type="text" name="loginPwd"><br>
            验证码:<input type="text" name="validCode"><br>
            <img src='http://localhost:8081/captche' width=200  height=100 /> <br>
            <input type="submit" value="登入">
            <input type="reset" value="取消">
        </form>
</body>
</html>

2.创建loginController.java

package cn.edu.mju.project1.controller;

import cn.edu.mju.project1.entity.User;
import cn.edu.mju.project1.service.UserService;

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;
import java.net.URLEncoder;

@WebServlet("/login")
public class loginController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       req.getRequestDispatcher("/WEB-INF/template/login.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String loginName =req.getParameter("loginName");
        String loginPwd =req.getParameter("loginPwd");
        String validCode = req.getParameter("validCode");
        String saveCode = (String)req.getSession().getAttribute("code");
    System.out.print(saveCode+validCode);
        String str= null;
        if (validCode != null) {
            if(saveCode.equals(validCode)) {
                UserService service = new UserService();
                User user = service.login(loginName,loginPwd);
                if (user != null) {
                    req.getSession().setAttribute("user",user);
                    resp.sendRedirect("./main");

                } else {
                    loginFail(req,resp,"账号或密码错误,请重新输入");
                }
            }     else{
                    loginFail(req,resp,"验证码错误");
                }
            }     else{
                    loginFail(req,resp, "请输入验证码");
                }
        }

        private void loginFail (HttpServletRequest req,HttpServletResponse resp, String str)throws ServletException, IOException{
                resp.sendRedirect("./login?err=" + URLEncoder.encode(str,"UTF-8"));
    }
}


3.创建跳转失败页面fall.jsp,成功页面main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
登入失败,原因:<%=request.getAttribute("msg")%>     请重新<a href="login">登入</a>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
这是主页面,欢迎<%=((User)session.getAttribute("user")).getNickname()%>
</body>
</html>

4.创建User.java,使用构造方法

package cn.edu.mju.project1.entity;

import java.util.Date;

public class User {
    private  Integer id;//Integer默认值是null
    private  String name;
    private  String pwd;
    private  String nickname;;
    private  Date birthday;

    public User(Integer id, String name, String pwd, String nickname, Date birthday) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
        this.nickname = nickname;
        this.birthday = birthday;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

5.创建UserService.java

package cn.edu.mju.project1.service;

import cn.edu.mju.project1.entity.User;

public class UserService {
    public User login(String loginName, String pwd){
        //通过loginName条件到数据库中查询此用户信息
        User saveUser =new  User(1,"50","123","陈",null);
        if(saveUser != null && saveUser.getName().equals(loginName)
                && saveUser.getPwd().equals(pwd)){
            return saveUser;
        }else{
            return null;
        }
    }
}

6.创建MainCtroller.java

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;
@WebServlet("/main")
public class MainController  extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.getRequestDispatcher("/WEB-INF/template/main.jsp").forward(req,resp);
    }
}

二、效果如下:

登入失败:
在这里插入图片描述
成功登入:

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值