JSP相关概念及应用

使用 JSP 处理客户端请求 

内置对象:内置对象是有WEB容器加载的一组类的实例(是指不需要创建可以直接使用的对象)


PageContex内置对象

Reques内置对象 作用:用于处理客户端请求
内置对象request的常用方法
返回类型方法名称说明
StringgetParameter(String name);根据页面表单组件名称获取页面提交数据
String[]getParameterValues(String name);获取一个页面表单组件对应多个值时的用户的请求数据
voidsetCharacterEncoding(String charset);指定每个请求的编码,在调用 request.getParameter()方法之前进行设定,可以用于解决中文乱码问题
voidgetRequestDispatcher(String path);返回一个 javax.servlet.RequestDispatcher 对象,该对象的 forward 方法用于转发请求
voidsetAttribute(String key,Object value);以键-值方式,将一个对象的值存放到request中
ObjectgetAttribute(String key);根据键获得request中存放的对象(注:在获得值时要进行强制转换)
Response内置对象 作用:用于响应客户端请求并向客户端输出信息
内置对象response的常用方法
返回类型方法名称说明
voidsendRedirect(String location);用来请求重定向到一个不同的URL
Session内置对象 作用:用于存储有关用户会话的所有信息
返回类型方法名称说明
voidsetAttribute(String key,Object value);以键-值方式,将一个对象的值存放到session中
ObjectgetAttribute(String key);根据键获得session中存放的对象(注:在获得值时要进行强制转换)
voidremoveAttribute(String key);删除指定的session中存放的对象的值
session的失效
描述方法
关闭浏览器关闭浏览器
设置时间限制1、session.setMaxInactiveInterval(时间大小);//设置失效最大时间间隔(单位为秒) 2、<session-config>      <session-timeout>2</session-timeout>    </session-config> //单位为分钟
直接失效session.invalidate();
Application内置对象 作用:用于实现用户之间的数据共享
返回类型方法名称说明
voidsetAttribute(String key,Object value);以键-值方式,将一个对象的值存放到application中
ObjectgetAttribute(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>
//导入的包 import 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区别
 getpost
传送URLHTTP协议
可见性客户端可见客户端部可见
长度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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值