PageContex内置对象
Reques内置对象
作用:用于处理客户端请求
内置对象request的常用方法
返回类型 | 方法名称 | 说明 |
String | getParameter(String
name); | 根据页面表单组件名称获取页面提交数据 |
String[] | getParameterValues(String name); | 获取一个页面表单组件对应多个值时的用户的请求数据 |
void | setCharacterEncoding(String charset); | 指定每个请求的编码,在调用 request.getParameter()方法之前进行设定,可以用于解决中文乱码问题 |
void | getRequestDispatcher(String
path); | 返回一个 javax.servlet.RequestDispatcher 对象,该对象的 forward 方法用于转发请求 |
void | setAttribute(String key,Object value); | 以键-值方式,将一个对象的值存放到request中 |
Object | getAttribute(String key); | 根据键获得request中存放的对象(注:在获得值时要进行强制转换) |
Response内置对象
作用:用于响应客户端请求并向客户端输出信息
内置对象response的常用方法
返回类型 | 方法名称 | 说明 |
void | sendRedirect(String
location); | 用来请求重定向到一个不同的URL |
Session内置对象
作用:用于存储有关用户会话的所有信息
返回类型 | 方法名称 | 说明 |
void | setAttribute(String key,Object
value); | 以键-值方式,将一个对象的值存放到session中 |
Object | getAttribute(String key); | 根据键获得session中存放的对象(注:在获得值时要进行强制转换) |
void | removeAttribute(String key); | 删除指定的session中存放的对象的值 |
session的失效
描述 | 方法 |
关闭浏览器 | 关闭浏览器 |
设置时间限制 | 1、session.setMaxInactiveInterval(时间大小);//设置失效最大时间间隔(单位为秒)
2、<session-config> <session-timeout>2</session-timeout> </session-config> //单位为分钟 |
直接失效 | session.invalidate(); |
Application内置对象
作用:用于实现用户之间的数据共享
返回类型 | 方法名称 | 说明 |
void | setAttribute(String
key,Object value); | 以键-值方式,将一个对象的值存放到application中 |
Object | getAttribute(String key); | 根据键获得application中存放的对象(注:在获得值时要进行强制转换) |
例 | <% Integer
counter = new Integer(); if(application.getAttribute("counter")==null) application.setAttribute("counter",new Integer(1)); else{ counter = application.getAttribute("counter"); application.setAttribute("counter",counter.intValue()++); } %> |
page、request、session、application的作用范围
对象 | 描述 | 对应关系 | 生命周期 |
page | 用户请求的当前页面 | 与浏览器对象对应 | |
request | 用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件 | 与浏览器对象对应 | |
session | 同一个http会话中的web组件共享它 | 与浏览器对象对应 | 会话超时,或者服务器端强制使会话失效 |
application | 整个web应用的所用web组件共享它 | 与服务器对象对应 | 应用程序(服务器端)启动到停止。 |
防止IE缓存jsp文件来源
方法 | 实现代码 |
使用java提供的方法,在jsp或者servlet中都可以 | <%
RESPONSE.SETHEADER("PRAGMA","NO-CACHE"); RESPONSE.SETHEADER("CACHE-CONTROL","NO-CACHE"); RESPONSE.SETDATEHEADER("EXPIRES", 0); %> |
使用html标记 | <head> <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> <META HTTP-EQUIV="CACHE-CONTROL"
CONTENT="NO-CACHE"> <META HTTP-EQUIV="EXPIRES" CONTENT="0"> </head> |
//导入的包
imp
ort java.text.SimpleDateFormat;
//日期格式化方法
public String getDateTime(){
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return formater.format(new Date());
}
//给select中赋值(从库中查找到的数据显示到下拉列表中)
<select name="boardID">
<%
NewsBoardDao newsBoardDao = new NewsBoardDao();
List list = newsBoardDao.findAllNewsBoard();
if(list!=null){
for(int i=0;i<listb.size();i++){
NewsBoard newsBoards = (NewsBoard)list.get(i);
if(news.getBoardID()==newsBoards.getBoardID()){ //加载显示选中项
%>
<option value=<%=newsBoards.getBoardID() %> selected><%=newsBoards.getBoardTitle() %></option>
<%
}else{ //加载其他未选中项
%>
<option value=<%=newsBoards.getBoardID() %>><%=newsBoards.getBoardTitle() %></option>
<%
}
}
}
%>
</select>
<table width="256" border="0">
<%
//循环输出版块标题
for(int i=0;i<list.size();i++){
NewsBoard newsBoard = (NewsBoard)list.get(i);
if(i%4==0){
%>
<tr>
<%
}
%>
<td align = "center"><%=newsBoard.getBoardTitle() %></a></td>
<%
if(i%4==3){
%>
</tr>
<%
}
}
%>
</table>
//Jsp页面之间传参方式
地址传参
传参方式 | 语法 |
表单提交传参 | <form
name="myForm" action="#.jsp?变量名1=<%=参数%>&变量名2=<%=参数%>" method=post onsubmit="return fun()"> 获得参数值 String 变量名 = request.getParameter("变量名1"); |
链接传参 | <a href = "#.jsp?变量名1=<%=参数%>&变量名2=<%=参数%>></a> 获得参数值 String 变量名 = request.getParameter("变量名1"); |
request转发传参 | request.getRequestDispatcher("#.jsp?变量名1="+参数+"&变量名2="+参数2).forword(request,response);
获得参数值 String 变量名 = request.getParameter("变量名1"); |
response重定向传参 | response.sendRedirect("#.jsp?变量名1="+参数+"&变量名2="+参数2); 获得参数值 String 变量名 = response.getParameter("变量名1"); |
调用方法传参
使用链接调用方法传参 | function
fun(){ var id=document.newsFrom.txtTP.value; //获得值 window.location.href="newsTP.jsp?str='ccc'&id="+id; //使用location进行连接 } <a href="javascript:fun()">确定</a> function delNews(id){ if(confirm("是否删除!")==true){ window.location.href="doNews.jsp?types=del&newsID="+id;
} } <a href="javascript:delNews(<%=news.getNewsID() %>)">删除</a> |
使用按钮调用方法传参 | function show(){ var x=document.getElementById("txtTP");//获得值 document.forms[0].action="newsTP.jsp?num="+x; //可以把一个页面的表单看成数组进行调用 document.forms[0].submit();
//调用表单提交方法 } <input name="btn" type="button" value="确定" onclick="show()"/> |
使用Jsp调用方法传参 | function fun(){ var id=document.newsFrom.txtTP.value; //获得值 window.location.href="newsTP.jsp?str='ccc'&id="+id; //使用location进行连接 } <%
out.print(fun()); %> |
页面跳转方法
分类 | 实现 | 浏览器地址 | 处理 | 跳转方式类型 | 请求状态 |
表单提交 | <form name="myForm"
action="#.jsp" method=post onsubmit="return fun()"> | URL改变 | 浏览器端处理 | 既可以get也可以post 使用method属性来确定 | 失效 |
链接 | <a href="#.jsp">链接</a> | URL改变 | 浏览器端处理 | get | 失效 |
重定向 | response.sendRedirect("#.jsp"); | URL改变 | 浏览器端处理 | post | 失效 |
页面转发 | request.getRequestDispatcher("#.jsp").forward(request,response); | URL不改变 | 服务器端处理 | get | 不失效 |
使用out.print()方法 | out.print("<script
type="text/javascript">alert("失败");history.go(-1);</script>); | | 浏览器端处理 | get | 失效 |
get和post区别
| get | post |
传送 | URL | HTTP协议 |
可见性 | 客户端可见 | 客户端部可见 |
长度 | 255字节 | 理论上没有限制 |
中文处理 | 只要是有中文的变量都要处理
String strget = "接收的字符"; String str = new String(strget.getBytes("ISO8859-1")); | 在小脚本中写入 request.setCharacterEncoding("GBK"); |
history对象的方法
名称 | 说明 |
back() | 加载history列表中的上一个URL |
forward() | 加载history列表中的下一个URL |
go("URL"or
number) | 加载history列表中指定的URL,或要求浏览器移动指定的页面数 |
location 对象的方法
名称 | 说明 |
assign("URL") | 加载 URL 指定的新的 HTML 文档 |
reload() | 重新加载当前页 |
replace("URL") | 通过加载URL指定的文档来替换当前文档 |
//使用include引用页面,包含进来的页面与该页面真正的融合,共用一个pageContext对象,所有包含的页面之间不能含有同名变量.
使用include引用页面
实现 | 描述 |
<%@
include file="#.jsp" %> | 当使用include引用时,当改变页面时,不可以立刻更新,必须重新加载(重新编译) |
<jsp:include page="#.jsp" /> | 当使用jsp引用时,当改变页面时可以立刻更新显示,不需要重新加载 |
声明和脚本的区别
转译前 | 转译后 | 运行机制 | 值变化 |
声明中的方法、变量 | 转换成类方法、全局变量 | 只在第一次打开页面时运行 | 值在每次打开浏览器时都不改变 |
脚本中的变量 | 转换成_jspService()方法中的变量 | 每次打开页面时运行 | 值在每次打开浏览器时都重新加载改变 |
转自:http://602618079.blog.163.com/blog/static/26657161200911595312132/