不常用内置对象
pageContext 通过它可以.出其他8大内置对象config
page
exception
常用内置对象
四大作用域:application>session>request>page
page:数据与一个页面绑定在一起,不同页面的pageContext对象不同
request:数据与一次请求绑定在一起
session:数据与一次会话绑定在一起
application: 数据与整个应用服务器绑定在一起
page:数据与一个页面绑定在一起,不同页面的pageContext对象不同
request:数据与一次请求绑定在一起
session:数据与一次会话绑定在一起
application: 数据与整个应用服务器绑定在一起
application
在项目启动的时候创建,在项目停止时销毁,一个web应用仅对应1个application
方法
setAttribute(key,vlue)
getAttribute
getRealPath("相对路径") 根据相对路径获取绝对路径
统计访问量 代码:
Integer count =(Integer)application.getAttribute("count");
if(count ==null){
application.setAttribute("count",1);
}
else{
application.setAttribute("count",count+1);
}
include 的两个用法:
在B.jsp中
1.<% @ include file="a.jsp" %>
将a.jsp和b.jsp先合并在一起,再翻译为.JAVA,再编译为.class文件。。。
2.pageContext.include("a.jsp");
先将a.jsp翻译,编译执行, 将结果和b.jsp合并再翻译,编译执行···
方法:
getId 获取sessionIdsetMaxInactiveInterval 设置session最大失效时长
getMaxInactiveInterval 获取··
invalidate 手动设置失效
setAttribute(String key,Object value) 以key-value的形式保存数据到session中
getAttribute(String key) 通过key获取对应值
removeAttribute(String key) 从session中删除指定key对应值
为了避免代码冗余,验证没有登录而跳转到登录界面的代码,可以放在一个单独的只有
这些代码的jsp文件中,再在需要登陆验证的页面导入该jsp文件
<%@ include file="loginController.jsp" %>
修改session失效时长的方法:
1.调用setMaxInactiveInterval(s)单位是秒2.在项目中的web.xml或者Tomcat中的web.xml中修改session失效时长(单位是分钟)
添加如下代码:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
注意:
一个项目中一般有两个web.xml(项目中和Tomcat中);如果有配置重复的选项,会以项目中的web.xml为准
Tomcat 中的web.xml是全局配置
out
方法:
write 只能打印字符println
request用于封装由客户端发送给服务器端的信息(如表单注册信息)
方法:
getParameter 根据name属性获取该值getParameterValues 上面的复数
setCharacterEncoding 设置服务器获取到的数据的编码格式(tomcat默认采用ISO-8859-1)
response用于封装返回由服务器响应客户端反馈给客户端的信息
方法:
sendRedirect(String location) 让客户发出另一个url的请求信息,达到跳转;另一个页面的作用处理乱码原理:
分析页面出现乱码 主要分析以下3个方面的编码格式是否一致(不一致就出现乱码)1.jsp页面本身的编码
pageEncoding 页面本身的编码
contentType: 浏览器渲染页面的时候采用的编码格式
一旦这两个其中一种编码格式已经指定 另外一种编码格式如果不进行指定的话
默认都采用已经指定的编码格式
2. 浏览器渲染页面采用的编码
3.服务器保存数据采用的编码(request) 默认采用的是:ISO-8859-1
出现乱码问题时,处理问题的方式:
1.提交表单时,采用post时:request.setCharacterEncoding("utf-8");设置服务器保存数据的编码格式为utf_8;
2.提交表单时,采用get时(数据提交到url中):(第一种方法就不适用了,因为设置的是request内部保存
数据的格式,不包括url)
a.改变在request获取出来的数据编码
//读取数据
String name=request.getParameter("name");
//对获取的数据进行字符转码:
name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
b.改变url的编码格式
在tomcat中 config/server.xml中添加 URIEncoding="UTF-8"
在调用重定位方法(sendRedirect)后,无法获取到第一次请求后提交的注册数据
原因:浏览器发起了两次请求,导致第一次请求失效
解决办法:
1.保存第一次请求获取到的数据,并作为参数来发起第二次请求
使用查询字符串:?连接 有多个值对时,用&分隔
response.sendRedirect("welcome.jsp?userName="+username);
2.只发送一次请求,即转发
<%
RequestDispatcher rd=request.getRequestDispatcher("welcom.jsp");
rd.forward(request,response);
%>
转发的作用: 在多个页面交互过程中请求中的数据可以共享;
转发和重定向的区别:
1.转发:转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递
客户端浏览器的地址栏不会显示转向后的地址
只发出一次请求
2.重定向:
重定向是在客户端发挥作用,通过发送一个新的请求来实现页面转向
在地址栏中可以显示转向后的地址
不止一次请求