2018-7-7 jsp 内置对象

不常用内置对象

pageContext  通过它可以.出其他8大内置对象
config
page
exception

 
常用内置对象

四大作用域:application>session>request>page
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合并再翻译,编译执行···

session

方法:

getId 获取sessionId
setMaxInactiveInterval 设置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  只能打印字符
print  
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.重定向:
重定向是在客户端发挥作用,通过发送一个新的请求来实现页面转向
在地址栏中可以显示转向后的地址
不止一次请求














猜你喜欢

转载自blog.csdn.net/qq1043002305/article/details/80950448