标签: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