版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whm18322394724/article/details/86444292
*前言 |
要求:使用jsp+servlet实现登录,浏览器登录后能够让登录信息保存在浏览器中。如何操作,详情请见文!
*基础环境 |
1、使用idea创建web项目
(1)、首先打开idea——>New Project——>选择Java——>勾选Java EE下的Web Application——>点击Next
(2)、选择项目存放的路径并填写项目名称
2、创建可以写代码的java类和jsp
(1)、在src下建一个包,然后再在包下建一个Servlet
(2)、在WEB-INF下创建两个写登录页和欢迎页的jsp。创建后的项目目录如下
3、配置Tomcat
4、引Servlet的包
5、尝试启动项目
如果能加载出默认的index.jsp,此时证明基础环境配好了。如果想启动时加载login.jsp,下面需要配置web.xml
6、配置web.xml
<?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_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>login.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
*代码 |
1、登录页:login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="login" method="post">
<input type="text" name="name" value=""/>
<input type="password" name="password" value="">
<input type="submit" name="登录">
</form>
</body>
</html>
2、欢迎页:welcoming.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<div style="font-size: 100px;color: red">
欢迎您的访问!
</div>
</body>
</html>
9、Servlet
package login;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/*
@author wanghuamei
@DESCRIPTION ${DESCRIPTION}
@create 2019/1/15
*/
public class Login extends javax.servlet.http.HttpServlet {
private Map<String,String> users=new HashMap<>();
public Login() {
super();
users.put("w","w");
users.put("y","y");
}
/**
* 表单提交时使用post请求
* 1、从request中获取用户名和密码
* 2、判断用户名是否存在,密码是否正确
* 3、正确:跳转“欢迎”界面,并将用户名和密码存入session中
* 4、不正确:提示错误信息
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name=request.getParameter("name");
String password=request.getParameter("password");
//判断用户名是否存在
if(users.containsKey(name)){
//判断密码是否正确
if(users.get(name).equals(password)){
RequestDispatcher requestDispatcher=request.getRequestDispatcher("/WEB-INF/jsp/welcoming.jsp");
requestDispatcher.forward(request,response);
request.getSession().setAttribute("name",name);
}
}
response.getWriter().print("error name or password");
}
/**
* get请求
* 1、从session中获取用户名
* 2、session中还存在保存的用户名:跳转“欢迎的界面”
* 3、session中的用户名已经不存在:跳转“登录页”,让用户输入用户名和密码
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//从session中获取用户名
String name=(String)request.getSession().getAttribute("name");
//用户名存在:跳转“欢迎界面”
if(name!=null && name.length()>0){
RequestDispatcher requestDispatcher=request.getRequestDispatcher("/WEB-INF/jsp/welcoming.jsp");
requestDispatcher.forward(request,response);
}
//不存在:跳转“登录页”
RequestDispatcher requestDispatcher=request.getRequestDispatcher("/WEB-INF/jsp/login.jsp");
requestDispatcher.forward(request,response);
}
}