JSP数据交互(一)
关于中文乱码问题
1.JSP页面本身的编码
page pageEncoding="UTF-8"
2.浏览器渲染页面时采用的编码
一旦一种编码格式已指定,另外一种编码格式如果不进行指定,默认采用已经指定的编码格式
contentType="text/html;charset=UTF-8"
3.服务器保存数据时采用的编码(request),默认编码为ISO-8859-1不支持中文
//post
request.setCharacterEncoding("UTF-8");
//get-1(常用)
String name = request.getParamter("name");
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
//get-2(不常用)
//修改tomcat-conf-server.xml在<Connector...URIEncoding="UTF-8"/>
转发和重定向
转发
- 在服务器端发挥作用,将同一个请求在服务器资源之间进行传递
- 地址栏:不会转向跳转地址
- request中的参数:不会丢失,跳转地址也可以访问到
重定向
- 在客户端发挥作用,客户端重新发送新的请求页面
- 地址栏:显示跳转地址
- request参数:丢失,跳转地址无法访问
会话 session
会话:同一个浏览器在一段时间内(从第一次请求到session对象失效)与web服务器一连串相关的交互过程
session与窗口的关系
1.访问同一项目时,不同浏览器的session对象不同,同一浏览器的不同窗口session对象相同
2.通过超链接打开子窗体时,子窗体和父窗体的session相同
session对象的失效
1.手动失效 --session对象立即失效
<%
session.invalidate();
%>
2.超时失效 --以秒为单位
<%
session.setMaxInactiveInterval(10);
%>
3.在tomcat或项目的web.xml增加配置 --以分钟为单位
<session-config>
<session-timeout>1</session-timeout>
</session-config>
关于web.xml问题
项目A.web.xml / 项目A.web.xml / tomcat-web.xml
tomcat-web.xml + 项目A-web.xml = 合并 -->对项目A有效
1.如果有配置重复的选项,项目A-web.xml
2.tomcat-web.xml是全局配置 项目A-web.xml是针对项目A的配置
3.项目B-web.xml 和 项目A-web.xml没有关系
include指令
页面A 引入页面B的代码
include指令的原理(先合并jsp在翻译java):
a.jsp + b.jsp = c.jsp -->翻译成 c_jsp.java -->编译成c_jsp.class -->执行
pageContext的include方法的原理(先翻译执行再合并):
b.jsp–>b.java–>编译运行–>结果+a.jsp–>a.java–>a.class–>执行
<%@include file="loginControl.jsp"; //page page
<%
pageContext.include("loginControl.jsp"); //page null
%>
ontrol.jsp"; //page page
~~~ java
<%
pageContext.include("loginControl.jsp"); //page null
%>