javaWeb使用servlet实现登录注册等功能(转发与重定向)
前言:
本文基于servlet实现扽登录、注册、自定义错误界面等功能,是一个入门的小案例,其中使用到了转发与重定向,更加深入了解二者的使用场景以及概念知识
最后:本专栏的代码已经同步到Gitee中,欢迎小伙伴一键start,原创整理不易,多多支持哦!传送门:https://gitee.com/shunchangdu/Javaweb_servlet
关注:《遇见小Du说》微信公众号,分享更多Java知识,不负每一次相遇。更多内容请访问:www.dushunchang.top
文章目录
项目结构:
一、前端代码:
login.jsp
<%--
Created by IntelliJ IDEA.
User: Du Shun Chang
Date: 2022/2/6
Time: 23:31
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>遇见小Du说</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login" method="post">
用户名:<input type="text" name="username"/></br>
密码:<input type="password" name="password"/></br>
<input type="submit" >
</form>
<a href="register.jsp">点击注册</a>
<span>${ msg }</span>
</body>
</html>
success.jsp
<%--
Created by IntelliJ IDEA.
User: Du Shun Chang
Date: 2022/2/6
Time: 22:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>遇见小Du说--成功</title>
</head>
<body>
<h1 style="background-color: yellow">登录成功啦,小Du猿欢迎您</h1>
</body>
</html>
register.jsp
<%--
Created by IntelliJ IDEA.
User: Du Shun Chang
Date: 2022/2/7
Time: 0:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>遇见小Du说--注册</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/register" method="post">
用户名:<input type="text"name="username"> </br>
密码:<input type="password" name="password"></br>
爱好:
GTA5<input type="checkbox" name="games" value="GTA5"></br>
战术小队<input type="checkbox" name="games" value="战术小队"></br>
刺客信条<input type="checkbox"name="games" value="刺客信条"></br>
荒野大嫖客<input type="checkbox" name="games" value="荒野大嫖客">
<input type="submit">
</form>
</body>
</html>
error.jsp
<%--
Created by IntelliJ IDEA.
User: Du Shun Chang
Date: 2022/2/7
Time: 0:13
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>遇见小Du说--错误</title>
</head>
<body>
<span style="background-color: crimson">账户或密码错误</span>
</body>
</html>
二、Web.xml代码
注册server服务、配置映射地址
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.dsc.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>register</servlet-name>
<servlet-class>com.dsc.servlet.Register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>register</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>
</web-app>
三、servlet代码:
登录servlet:
package com.dsc.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author: Du Shun Chang
* @title: LoginServlet
* @date: 2022/2/6 23:44
* @description: 登录功能
* @version:1.0
*/
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
if (username.equals("小Du猿") && password.equals("admin")){
// System.out.println("我进入到登录方法中");
System.out.println(username+" "+password);
response.sendRedirect("/JavaWeb_demo_4_ForwardRedirection_war/success.jsp");//绝对位置success.jsp,重定向后地址栏发生变化
}else{
request.getRequestDispatcher("error.jsp").forward(request, response);//转发到error.jsp,相对位置,一般在静态资源目录下
request.setAttribute("msg", "账户或密码错误");
}
}
}
注册Servlet:
package com.dsc.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
/**
* @author: Du Shun Chang
* @title: Register
* @date: 2022/2/7 0:42
* @description: 注册servelet,多传参功能实现
* @version:1.0
*/
public class Register extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] games = req.getParameterValues("games");
System.out.println(username+password);
System.out.println(Arrays.toString(games));
req.getRequestDispatcher("success.jsp").forward(req, resp);
}
}
总结
本文写了登录注册的小Demo,觉得不错的小伙伴一键start哟
关注《遇见小Du说》学习更多小知识
我们下期不见不散哟,下期内容为:《面试官的灵魂质问--什么是Cookie与session?》,敬请期待....