JAVA遇见HTML——JSP篇(JSP状态管理)

 

 

 

 

 

 

 

 案例:Cookie在登录中的应用

 

URL编码与解码的工具类解决中文乱码的问题,这个工具类在java.net.*包里

编码:URLEncoder.encode(String s,String enc)//s:对哪个字符串进行编码,enc:用的字符集(例:utf-8)

解码:URLDecoder.decode(String s,String enc)//s:对哪个字符串进行解码,enc:用哪个字符集解码(例:utf-8)

login.jsp

 1 <%@ page language="java" import="java.util.*,java.net.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'index.jsp' starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">    
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     -->
21   </head>
22   
23   <body>
24     <h1>用户登录</h1>
25     <hr>
26     <% 
27       request.setCharacterEncoding("utf-8");
28       String username="";
29       String password = "";
30       Cookie[] cookies = request.getCookies();
31       if(cookies!=null&&cookies.length>0)
32       {
33            for(Cookie c:cookies)
34            {
35               if(c.getName().equals("username"))
36               {
37                    username =  URLDecoder.decode(c.getValue(),"utf-8");
38               }
39               if(c.getName().equals("password"))
40               {
41                    password =  URLDecoder.decode(c.getValue(),"utf-8");
42               }
43            }
44       }
45     %>
46     <form name="loginForm" action="dologin.jsp" method="post">
47        <table>
48          <tr>
49            <td>用户名:</td>
50            <td><input type="text" name="username" value="<%=username %>"/></td>
51          </tr>
52          <tr>
53            <td>密码:</td>
54            <td><input type="password" name="password" value="<%=password %>" /></td>
55          </tr>
56          <tr>
57            <td colspan="2"><input type="checkbox" name="isUseCookie" checked="checked"/>十天内记住我的登录状态</td>
58          </tr>
59          <tr>
60            <td colspan="2" align="center"><input type="submit" value="登录"/><input type="reset" value="取消"/></td>
61          </tr>
62        </table>
63     </form>
64   </body>
65 </html>

dologin.jsp

 1 <%@ page language="java" import="java.util.*,java.net.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'dologin.jsp' starting page</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22 
23   </head>
24   
25   <body>
26     <h1>登录成功</h1>
27     <hr>
28     <br>
29     <br>
30     <br>
31     <% 
32        request.setCharacterEncoding("utf-8");
33        //首先判断用户是否选择了记住登录状态
34        String[] isUseCookies = request.getParameterValues("isUseCookie");
35        if(isUseCookies!=null&&isUseCookies.length>0)
36        {
37           //把用户名和密码保存在Cookie对象里面。
38           String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
39           //使用URLEncoder解决无法在Cookie当中保存中文字符串问题
40           String password = URLEncoder.encode(request.getParameter("password"),"utf-8");
41           
42           Cookie usernameCookie = new Cookie("username",username);
43           Cookie passwordCookie = new Cookie("password",password);
44           usernameCookie.setMaxAge(864000);
45           passwordCookie.setMaxAge(864000);//设置最大生存期限为10天
46           response.addCookie(usernameCookie);
47           response.addCookie(passwordCookie);
48        }
49        else
50        {//如果用户没有勾选记住用户名、密码的复选框,则把已经保存的原来的cookie设置失效
51           Cookie[] cookies = request.getCookies();
52        //曾经保存过用户名、密码
53           if(cookies!=null&&cookies.length>0)
54           {
55              for(Cookie c:cookies)
56              {
57                 if(c.getName().equals("username")||c.getName().equals("password"))
58                 {
59                     c.setMaxAge(0); //设置Cookie失效
60                     response.addCookie(c); //重新保存。
61                 }
62              }
63           }
64        }
65     %>
66     <a href="users.jsp" target="_blank">查看用户信息</a>
67     
68   </body>
69 </html>

user.jsp

 1 <%@ page language="java" import="java.util.*,java.net.*" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'users.jsp' starting page</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22 
23   </head>
24   
25   <body>
26     <h1>用户信息</h1>
27     <hr>
28     <% 
29       request.setCharacterEncoding("utf-8");
30       String username="";
31       String password = "";
32       Cookie[] cookies = request.getCookies();
33       if(cookies!=null&&cookies.length>0)
34       {
35            for(Cookie c:cookies)
36            {
37               if(c.getName().equals("username"))
38               {
39                    username = URLDecoder.decode(c.getValue(),"utf-8");
40               }
41               if(c.getName().equals("password"))
42               {
43                    password = URLDecoder.decode(c.getValue(),"utf-8");
44               }
45            }
46       }
47     %>
48     <BR>
49     <BR>
50     <BR>
51          用户名:<%=username %><br>
52          密码:<%=password %><br>
53   </body>
54 </html>

 

 

 

转载于:https://www.cnblogs.com/songsongblue/p/9753548.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PE文件讲解

我们大家都知道&#xff0c;在Windows 9x、NT、2000下&#xff0c;所有的可执行文件都是基于Microsoft设计的一种新的文件格式Portable Executable File Format&#xff08;可移植的执行体&#xff09;&#xff0c;即PE格式。有一些时候&#xff0c;我们需要对这些可执行文件进…

easyui 布局之window和panel一起使用时,拉动window宽高时panel不跟随一起变化

项目开发中布局是每一个组件都由最外层的window和内部的至少一个panel组成&#xff0c;其他的细小组件再依次放到panel中。 问题&#xff1a;当拉动外部的window时我们希望内部的panel的宽高也跟着变化&#xff0c;但是并没有&#xff0c;尤其拉动其高度是更为明显&#xff0c;…

是什么使波西米亚狂想曲成为杰作-数据科学视角

平均“命中率”是什么样的 (What an Average ‘Hit’ looks like) Before we break the song down, let us have a brief analysis of what the greatest hits of all time had in common. I have picked 1500 songs ( charting hits ) right from the ’50s to the’10s, spre…

PE文件感染和内存驻留

这次&#xff0c;作者将和大家一起讨论病毒的感染技术。另外&#xff0c;从本文开始&#xff0c;我们将陆续接触到一些病毒的高级编码技术。例如&#xff0c;内存驻留、EPO&#xff08;入口点模糊&#xff09;技术、加密技术、多态和变形等。通过这些高级技巧&#xff0c;你将进…

Python函数积累

评估函数eval() 去掉参数最外侧引号并执行余下语句的函数 fun:将让任何输入的字符串转换为python语句&#xff08;如"12132" -> 12132&#xff09;转载于:https://www.cnblogs.com/LYluck/p/10376531.html

流行编程语言_编程语言的流行度排名

流行编程语言There has never been a unanimous agreement on what the most popular programming languages are, and probably never will be. Yet we believe that there is merit in trying to come up with ways to rank the popularity of programming languages. It hel…

Attributes.Add用途与用法

Attributes.Add("javascript事件","javascript语句");如&#xff1a;this.TextBox1.Attributes.add("onblue", "window.Label1.style.backgroundColor#000000;");this.TextBox1.Attributes.Add("onblur","this.style.d…

使用UIWebView加载网页

1、使用UIWebView加载网页 运行XCode 4.3&#xff0c;新建一个Single View Application&#xff0c;命名为WebViewDemo。 2、加载WebView 在ViewController.h添加WebView成员变量和在ViewController.m添加实现 [cpp] view plaincopyprint?#import <UIKit/UIKit.h> …

Java 开源库精选(持续更新)

仅记录亲自使用和考虑使用的Apache Commons Commons IO - Commons IO 是一个帮助开发IO功能的实用程序库 Commons Configuration - Commons Configuration 提供了一个通用配置界面&#xff0c;使Java应用程序可以从各种来源读取配置数据。查看更多可重用、稳定的 Commons 组件S…

corba的兴衰_数据科学薪酬的兴衰

corba的兴衰意见 (Opinion) 目录 (Table of Contents) Introduction 介绍 Salary and Growth 薪资与增长 Summary 摘要 介绍 (Introduction) In the past five years, data science salary cumulative growth has varied between 12% in the United States, according to Glass…

hibernate的多表查询

1.交叉连接 select * from A ,B 2.内连接 可以省略inner join 隐式内连接&#xff1a; select * from A,B where A.id B.aid; 显式内连接&#xff1a; select * from A inner join B on A.id B.aid; 迫切内连接&#xff1a; 需要加上fetch关键字 内连接查询两者共有的属性…

C# 读取PE

最后分析结果会放在 一个DATASET里 ResourceDirectory这个TABLE 增加了 GUID列 为了好实现数结构 using System; using System.IO; using System.Data; using System.Collections; namespace PETEST { /// <summary> /// PeInfo 的摘要说明。 /// zgkesina.com …

10 个深恶痛绝的 Java 异常。。

异常是 Java 程序中经常遇到的问题&#xff0c;我想每一个 Java 程序员都讨厌异常&#xff0c;一 个异常就是一个 BUG&#xff0c;就要花很多时间来定位异常问题。 什么是异常及异常的分类请看这篇文章&#xff1a;一张图搞清楚 Java 异常机制。今天&#xff0c;栈长来列一下 J…

POJ 2777 - Count Color(线段树区间更新+状态压缩)

题目链接 https://cn.vjudge.net/problem/POJ-2777 【题意】 有一个长度为 LLL 的区间 [1,L][1,L][1,L] &#xff0c;有 TTT 种颜色可以涂&#xff0c;有 QQQ 次操作&#xff0c;操作分两种C A B CC \ A \ B \ CC A B C 把区间 [A,B][A,B][A,B] 涂成第 CCC 种颜色P A BP \ A \ …

如何实施成功的数据清理流程

干净的数据是发现和洞察力的基础。 如果数据很脏&#xff0c;您的团队为分析&#xff0c;培养和可视化数据而付出的巨大努力完全是在浪费时间。 当然&#xff0c;肮脏的数据并不是新的。 它早在计算机变得普及之前就困扰着决策。 现在&#xff0c;计算机技术已普及到日常生活中…

nginx前端代理tomcat取真实客户端IP

nginx前端代理tomcat取真实客户端IP2011年12月14日⁄ nginx⁄ 暂无评论⁄ 被围观 3,000 次使用Nginx作为反向代理时&#xff0c;Tomcat的日志记录的客户端IP就不在是真实的客户端IP&#xff0c;而是Nginx代理的IP。要解决这个问题可以在Nginx配置一个新的Header&#xff0c;用来…

kubeadm安装kubernetes 1.13.2多master高可用集群

1. 简介 Kubernetes v1.13版本发布后&#xff0c;kubeadm才正式进入GA&#xff0c;可以生产使用,用kubeadm部署kubernetes集群也是以后的发展趋势。目前Kubernetes的对应镜像仓库&#xff0c;在国内阿里云也有了镜像站点&#xff0c;使用kubeadm部署Kubernetes集群变得简单并且…

通才与专家_那么您准备聘请数据科学家了吗? 通才还是专家?

通才与专家Throughout my 10-year career, I have seen people often spend their time and energy in passionate debates about what data science can deliver, and what data scientists do or do not do. I submit that these are the wrong questions to focus on when y…

ubuntu opengl 安装

安装相应的库&#xff1a; sudo apt-get install build-essential libgl1-mesa-dev sudo apt-get install freeglut3-dev sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev 实例&#xff1a; #include "GL/glut.h" void…

分享一病毒源代码,破坏MBR,危险!!仅供学习参考,勿运行(vc++2010已编译通过)

我在编译的时候&#xff0c;杀毒软件提示病毒并将其拦截&#xff0c;所以会导致编译不成功。 1>D:\c工程\windows\windows\MBR病毒.cpp : fatal error C1083: 无法打开编译器中间文件:“C:\Users\lenovo\AppData\Local\Temp\_CL_953b34fein”: Permission denied 1> 1>…