码迷,mamicode.com
首页 > 编程语言 > 详细

JavaWeb基础 Cookie 记录用户名

时间:2017-12-06 20:09:37      阅读:244      评论:0      收藏:0      [点我收藏+]

标签: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视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。

JavaWeb基础 Cookie 记录用户名

标签:boolean   ssi   put   定位   web   string   nbsp   response   input   

原文地址:http://www.cnblogs.com/jizuiku/p/7994114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!