一、Session案例:
1、完成用户的一次性登陆(含验证码)
2、防止表单重复提交:MD5、Base64编码
二、Session对象的状态转换(生命周期)
1、修改HttpSession对象的默认失效时间30分钟
web.xml
<session-config>
<session-timeout>1</session-timeout><!--失效时间,单位是分钟-->
</session-config>
三、浏览器IE,在什么情况下会开启一次新的会话。
1、IE7(含)-:
开启一个新的浏览器进程,就是一次新会话。
2、IE8(含)+:
开启一个新的浏览器进程,并没有开始新会话。(文件菜单、开始新会话)
新开启一个Tab页,与原有页面属于同一次会话。
通过一个页面的超链接(target="_blank"),与原有页面属于同一次会话。
四、客户端禁用cookie后,会话数据的保存问题
1、对于使用http://localhost来访问网站,即使客户端禁用了cookie,但是无效。
2、解决办法:URL重写。
http://192.168.1.250:8080/day07/servlet/RegistServlet
---->
http://192.168.1.250:8080/day07/servlet/RegistServlet;JSESSIONID=2983749832743298
String url = HttpServletResponse.encodeURL(String url)
特点:如果服务器知道客户端没有禁用cookie,那么该方法将不会重写URL。
五、JSP概述及最佳实践
1、更改MyEclipse生成的JSP模板。模板文件与Servlet.java(Servlet模板文件)很近。
2、学好JSP的关键:JSP就是Servlet。一定要记住JSP中的东东会出现在Servlet的什么地方?
3、最佳实践:利用Servlet作为控制器;JSP用于页面显示。
六、JSP语法
1、模板元素:JSP页面中的HTML内容。
2、JSP中的脚本表达式:
作用:输出内容到页面上。
语法:<%=java表达式%>
“java表达式”会原封不动的出现在JSP对应的Servlet的service方法中的out.println(java表达式);参数中
java表达式后面不能有分号。
3、JSP脚本片段
作用:在JSP中嵌入多行java代码。
语法:
<%
多行java代码
%>
多行java代码,会原封不动地出现在对应Serlvet的service方法中。
4、JSP声明
作用:定义成员。
语法:<%! 你的成员%>
声明代码会出现在对应的类中。
5、JSP中注释
语法:<%--这是注释--%>
七、JSP的指令:3个
1、作用:给JSP引擎用的(Tomcat)。不产生任何输出。
2、语法:<%@ 指令名称 指令属性1="值1" ...%>
a、page指令
属性:
language:指示使用脚本语言。默认是java,目前只支持java。
extends:指示JSP对应的Servlet的父类是谁。不要修改。
*import:导入JSP中的java脚本中用到的类。
*session:指示当前页面支不支持会话(拿不到HttpSession对象的引用session)。默认值是true。
可选值true|false.
buffer:字符输出流的缓存。默认值是8Kb。可选值none|8Kb|sizeKb
autoFlush:自动刷新缓存。
isThreadSafe:指示JSP对应的Servlet是否实现SingleThreadModel这个废物。false是实现,
true是不安全的。默认是true。
*errorPage:(转发技术)
指示提示错误的页面的路径。如果以"/"开头表示绝对路径。
配置全局错误提示页面:
web.xml
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
*isErrorPage:指示是否产生exception对象的引用。true|false.默认值是false
*contentType:response.setContentType("text/html;charset=UTF-8");
*pageEncoding:指示翻译JSP时查的码表。
pageEncoding有2个作用:第一告知引擎查哪个码表读JSP文件进行翻译;
第二,以指定的编码输出字符,并通知客户端以什么编码显示
*isELIgnored:是否忽略EL表达式。默认值是false。可选值是true\false
b、include指令:(能用静态不用动态)
属性:file,目标资源的路径。如果以"/"开头表示绝对路径。
静态包含:include指令就是静态包含。
动态包含:<jsp:include page=""/>
c、taglib指令
作用:引入外部的标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
1、完成用户的一次性登陆(含验证码)
2、防止表单重复提交:MD5、Base64编码
二、Session对象的状态转换(生命周期)
1、修改HttpSession对象的默认失效时间30分钟
web.xml
<session-config>
<session-timeout>1</session-timeout><!--失效时间,单位是分钟-->
</session-config>
三、浏览器IE,在什么情况下会开启一次新的会话。
1、IE7(含)-:
开启一个新的浏览器进程,就是一次新会话。
2、IE8(含)+:
开启一个新的浏览器进程,并没有开始新会话。(文件菜单、开始新会话)
新开启一个Tab页,与原有页面属于同一次会话。
通过一个页面的超链接(target="_blank"),与原有页面属于同一次会话。
四、客户端禁用cookie后,会话数据的保存问题
1、对于使用http://localhost来访问网站,即使客户端禁用了cookie,但是无效。
2、解决办法:URL重写。
http://192.168.1.250:8080/day07/servlet/RegistServlet
---->
http://192.168.1.250:8080/day07/servlet/RegistServlet;JSESSIONID=2983749832743298
String url = HttpServletResponse.encodeURL(String url)
特点:如果服务器知道客户端没有禁用cookie,那么该方法将不会重写URL。
五、JSP概述及最佳实践
1、更改MyEclipse生成的JSP模板。模板文件与Servlet.java(Servlet模板文件)很近。
2、学好JSP的关键:JSP就是Servlet。一定要记住JSP中的东东会出现在Servlet的什么地方?
3、最佳实践:利用Servlet作为控制器;JSP用于页面显示。
六、JSP语法
1、模板元素:JSP页面中的HTML内容。
2、JSP中的脚本表达式:
作用:输出内容到页面上。
语法:<%=java表达式%>
“java表达式”会原封不动的出现在JSP对应的Servlet的service方法中的out.println(java表达式);参数中
java表达式后面不能有分号。
3、JSP脚本片段
作用:在JSP中嵌入多行java代码。
语法:
<%
多行java代码
%>
多行java代码,会原封不动地出现在对应Serlvet的service方法中。
4、JSP声明
作用:定义成员。
语法:<%! 你的成员%>
声明代码会出现在对应的类中。
5、JSP中注释
语法:<%--这是注释--%>
七、JSP的指令:3个
1、作用:给JSP引擎用的(Tomcat)。不产生任何输出。
2、语法:<%@ 指令名称 指令属性1="值1" ...%>
a、page指令
属性:
language:指示使用脚本语言。默认是java,目前只支持java。
extends:指示JSP对应的Servlet的父类是谁。不要修改。
*import:导入JSP中的java脚本中用到的类。
*session:指示当前页面支不支持会话(拿不到HttpSession对象的引用session)。默认值是true。
可选值true|false.
buffer:字符输出流的缓存。默认值是8Kb。可选值none|8Kb|sizeKb
autoFlush:自动刷新缓存。
isThreadSafe:指示JSP对应的Servlet是否实现SingleThreadModel这个废物。false是实现,
true是不安全的。默认是true。
*errorPage:(转发技术)
指示提示错误的页面的路径。如果以"/"开头表示绝对路径。
配置全局错误提示页面:
web.xml
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
*isErrorPage:指示是否产生exception对象的引用。true|false.默认值是false
*contentType:response.setContentType("text/html;charset=UTF-8");
*pageEncoding:指示翻译JSP时查的码表。
pageEncoding有2个作用:第一告知引擎查哪个码表读JSP文件进行翻译;
第二,以指定的编码输出字符,并通知客户端以什么编码显示
*isELIgnored:是否忽略EL表达式。默认值是false。可选值是true\false
b、include指令:(能用静态不用动态)
属性:file,目标资源的路径。如果以"/"开头表示绝对路径。
静态包含:include指令就是静态包含。
动态包含:<jsp:include page=""/>
c、taglib指令
作用:引入外部的标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>