论文导读::图1用户注册页面regUser.html。表单传参是最常用的参数传递方法:利用表单收集用户键入的信息。
论文关键词:JavaWeb,页面,参数传递
1.表单传参
表单传参是最常用的参数传递方法:利用表单收集用户键入的信息,传递到服务器进行处理。“用户注册”的例子。
  
图 1 用户注册页面regUser.html
1) 注册新用户页面regUser.html代码:
<form id='regUserForm'name='regUserForm' method='post' action='saveRegUser.jsp'>
……
<input name='userName'type='text' id='userName'onclick='dispPrompt(0,true)' onblur='dispPrompt(0,false)'/>
……
</form>
name属性:用户名文本框名称,也是参数名称;method属性:表单传参的方法;action属性:接收页面名称。
接收参数用request对象,request对象是javax.servlet.HttpServletRequest的实例。客户端请求一个JSP页面时,JSP服务器将客户端的请求信息封装在request对象中。
接收方法为request.getParameter(“参数名”)。
2) saveRegUser.jsp代码:
<%
……
//接收用户输入的信息(账号、密码)
StringuserName=request.getParameter('userName');
//参数名用引号(')括起来
……
%>
表单隐藏域传参,例如:
<input type=”hidden” name=”action” value=”deleStud”/>
hidden:<input>标签为隐藏域标签参数传递,参数action,值为“deleStud”。接收方法相同。
表单传参常用于用户登录、用户注册等信息提交的场合。
2.URL传递参数
URL传参就是在传递地址的尾部加上? 后面跟参数的名字和其值,在URL所指向的页面中就可以用request.getParameter('参数名字')获取的参数值。
用法:URL?参数名=参数值,例:
http://localhost:8080/news/DispNews.jsp?newId=34
DispNews.jsp页面中接收方法:
request.getParameter(“newId”)免费论文。
优点:灵活。
缺点:传参数据量不能太大,且参数信息显示在地址栏中,对用户来说是透明的,不安全。可以将传递的字符进行加密,达到隐藏数据的目的。
一般在超级链接传递参数时使用方法。
3.session传参
session对象通常用来实现状态维持,可在多个页面间的共享信息,是JSP的内置对象,javax.servlet.http.HttpSession类的实例,指的是客户端与服务器的一次会话,会话从客户端链接到服务器开始参数传递,直到与服务器断开连接为止。
存取session中对象的常用方法的有setAttribute()、getAttribute()。setAttribute()方法有两个参数,第一个为标识名,第二个为值,形式('key','value'),采用键值对的形式。
例,把用户名为userName,值为“admin123”的信息保存到session对象中,写法:
session.setAttribute('userName','admin123');
取出方法:
String userName=(String)(session.getAttribute('userName'));
注意:session对象中对象需要强制类型转换。
优点:不管什么数据类型,都可以放到session中,以对象的形式存储于散列表中。在会话结束之前有效。持续时间与request相比要长。
缺点:session中把所有数据当成对象来存取,使用时需强制类型转换。占用服务器的资源大。
与seesion对象相似的另一个内置对象application,有效期更长。只用系统开始运行,直到系统结束为止参数传递,application对象一直有效。常用于系统的公共变量,如访问次数的实现等。
4.jsp:para标签传参
jsp:para标签参数传递一般与jsp:forword标签结合使用。语法格式:
<jsp:forword page=”URL”>
<jsp:para name='参数名1' value='参数1的值'/>
……
<jsp:para name='参数名n' value='参数n的值'/>
</jsp:forword>
说明:page属性的值是转向的文件名,若是动态网页如JSP文件,则可以传递参数。
例:
1)para0.jsp代码:
<body>
<jsp:forwardpage='/para1.jsp'>
<jsp:paramname='role' value='admin'/>
<jsp:param name='userName' value='czz'/>
</jsp:forward>
</body>
2)para1.jsp
<body>
<% Stringrole=request.getParameter('role');
StringuserName=request.getParameter('userName');%>
密码:<%=role%>
用户名:<%= userName%>
</body>
特点:地址栏显示的地址不变。
5.jsp:useBean动作指令传参
1)jsp:useBean指令
用于创建JavaBean对象。语法格式:
<jsp:useBean id='JavaBean的名称' scope='有效范围' class='包名.类名'>
</jsp:useBean>
id属性:JavaBean实例的名字。
scope属性:JavaBean实例(对象)的有效范围,取值有四种:page、request、session、application免费论文。默认值为page——当前页面及当前页面所包含的静态文件中有效;request——request期间有效;session——会话期间有效;application——所有客户端共享这个JavaBean对象,直至服务器关闭。
class属性:javaBean的类名。
2)setProperty动作指令
用来设置bean对象的属性值,基本语法格式有4种:
<jsp:setProperty name='JavaBean的名称'property='*'/>
<jsp:setProperty name='JavaBean的名称' property='属性名称'/>
<jsp:setProperty name='JavaBean的名称' property='属性名称' param='参数名称'/>
<jsp:setProperty name='JavaBean的名称' property='属性名称' value='属性值'/>
第一种格式:property=“*”,应用这种格式要求bean属性的名字与类型要和request对象中参数名称与类型一致,以此用bean中的属性来接收客户输入的数据,系统会根据名称来自动匹配。第二种格式:只设置其中匹配的一个bean的属性。第三种格式:根据指定的request对象中的参数与属性匹配。
该指令可以在useBean动作指令中使用,也可在声明了useBean后使用,但不能在声明之前使用。
提示:在同一个setProperty动作指令中不能同时存在param和value参数。
3)geProperty动作指令
用来获得bean的属性并将其转换为字符串,再在JSP页面中输出。使用的语法格式如下:
<jsp:getProperty name='bean的名称' property='属性名称'/>
例子:
<%@ page language='java'import='java.util.*' pageEncoding='gb2312'%>
<jsp:useBean id='stud'class='com.czz.Stud'scope='session'></jsp:useBean>
<jsp:setPropertyproperty='sid' value='200901001' name='stud'/>
<jsp:setPropertyproperty='sname' value='张平' name='stud'/>
学号:<jsp:getPropertyname='stud' property='sid' />
姓名:<jsp:getPropertyname='stud' property='sname' />
6.其他传参方法
页面传参的方法还有很多参数传递,如JSTL中的<c:redirect>和<c:param>标签、 <c:url>标签,Struts、JSF等框架中,也定义了各自标签满足页面传参的需要,在此不做讲述。
在实战开发中,Java Web中页面传参方法很多,各自的特点和使用范围各不相同,但是方法和原理基本一致。(代码经过严格测试,测试环境:WindowsXP+tomcat6+jdk1.6。)
参考文献:
【1】http://zhidao.baidu.com/question/157909128.html
【2】http://www.51cto.com/art/200709/55099.htm
【3】http://bbs.365master.com/thread-23036-1-1.html
【4】http://baike.baidu.com/view/1109992.htm
【5】http://jonsion.javaeye.com/blog/460822
【6】邓子云张赐.JSP网络编程——从基础到实践.电子工业出版社.2006
|