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