标签:boolean ssi put 定位 web string nbsp response input
礼悟:
     好好学习合思考,尊师重道存感恩。叶见寻根三返一,江河湖海同一体。
          虚怀若谷良心主,愿行无悔给最苦。读书锻炼强身心,诚劝且行且珍惜。
javaEE:7
javaSE:1.8
JSTL:1.2.2
server:tomcat 8.5
browser:Chrome/Firefox
os:windows7 x64
ide:MyEclipse 2017
 
项目结构
 
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Day11</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>LoginServlet</servlet-name>
  	<servlet-class>com.jizuiku.servlet.LoginServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>LoginServlet</servlet-name>
  	<url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
  
</web-app>
LoginServlet.java
package com.jizuiku.servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * 
 * 
 * @author 博客园-给最苦
 * @version V2017.11.21
 */
public class LoginServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		// 处理中文
		request.setCharacterEncoding("utf-8");
		// 获取
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		// 检验用户名和密码是否正确
		boolean isCorrectUsername = "jizuiku".equalsIgnoreCase(username);
		boolean isCorrectPassword = "jizuiku".equalsIgnoreCase(password);
		if (isCorrectUsername && isCorrectPassword) {
			// 登陆成功
			
			// 向session中保存一下username
			request.getSession().setAttribute("username", username);
			
			// 保存用户信息到cookie中
			Cookie cookie = new Cookie("username", username);
			// cookie的保存时间为 1小时
			cookie.setMaxAge(60*60);
			response.addCookie(cookie);
			// 换到新的网址下
			// 这里用的是重定向
			response.sendRedirect("/Day11/sessionDemo/successOne.jsp");
		} else {
			// 登录失败
			// 保存提示信息
			request.setAttribute("message", "输入的信息有误");
			// 转发到login.jsp中,为什么不用重定向?
			// 因为信息保存在了request中
			RequestDispatcher rd = request.getRequestDispatcher("/sessionDemo/login.jsp");
			rd.forward(request, response);
		}
	}
}
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP ‘login.jsp‘ starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>
<body>
	<%
		String username = "";
		Cookie[] cookies = request.getCookies();
		
		if (cookies != null) {
			for (Cookie c : cookies) {
				if ("username".equalsIgnoreCase(c.getName())) {
					username = c.getValue();
					break;
				}
			}
		}
	%>
	<%
		String message = "";
		String msgFromLoginServlet = (String) request.getAttribute("message");
		if (msgFromLoginServlet != null) {
			message = msgFromLoginServlet;
		}
	%>
	<h1><%=message %></h1>
	<h1>登录表单</h1>
	<form action="/Day11/LoginServlet" method="post">
		用户名:<input type="text" name="username" value="<%=username%>" /> 密 码:
		<input type="password" name="password" /> <input type="submit"
			value="登录" />
	</form>
</body>
</html>
successOne.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP ‘successOne.jsp‘ starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>
<body>
	<%
		// 因为这个页面的定位是 访问控制页面,只有 登陆成功的人才能查看
		// 所以,为了防止有人绕过登录页面 进行访问,所以写了这段代码
		// 但即使是这样写了,还是不够的。信息安全领域很强的!
		String username = (String) session.getAttribute("username");
		
		if (username == null) {
			request.setAttribute("message", "请先登录");
			// 转发!
			request.getRequestDispatcher("/sessionDemo/login.jsp").forward(request, response);
			// return;
		}
		
		
	%>
	<h1>
		欢迎<%=username%>!
	</h1>
</body>
</html>
浏览器查看

输入错误的信息
 
显示错误

输入正确的信息

正确!

查看cookie

关闭浏览器,重新查看登录页面

注:自己看看就好,实际开发则需要注意很多没有写道的细节。
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。
标签:boolean ssi put 定位 web string nbsp response input
原文地址:http://www.cnblogs.com/jizuiku/p/7994114.html