JSP携带id属性实现不同JSP页面的跳转

来源:互联网 发布:linux bash脚本 while 编辑:程序博客网 时间:2024/05/17 20:29


1.首先明白java如何得到Get和Post请求URL和参数列表

一 获取URL:
getRequestURL()

二 获取参数列表:

1.getQueryString()

只适用于GET,比如testServlet?a=b&c=d&e=f,通过request.getQueryString()得到的是a=b&c=d&e=f.


2.getParameter()
GET和POST都可以使用
但如果是POST请求要根据<form>表单提交数据的编码方式来确定能否使用.
当编码方式是(application/x- www-form-urlencoded)时才能使用.
这种编码方式(application/x-www-form-urlencoded)虽然简单,但对于传输大块的二进制数据显得力不从心.
对于传输大块的二进制数这类数据,浏览器采用了另一种编码方式("multipart/form-data"),这时就需要使用下面的两种方法.

3.getInputStream()
4.getReader()
上面两种方法获取的是Http请求包的包体,因为GET方式请求一般不包含包体.所以上面两种方法一般用于POST请求获取参数.

需要注意的是:
request.getParameter()、 request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。比如:当form表单内容采用 enctype=application/x-www-form-urlencoded编码时,先通过调request.getParameter()方法得到参数后,再调用request.getInputStream()或request.getReader()已经得不到流中的内容,因为在调用 request.getParameter()时系统可能对表单中提交的数据以流的形式读了一次,反之亦然。

当form表单内容采用 enctype=multipart/form-data编码时,即使先调用request.getParameter()也得不到数据,
所以这时调用request.getParameter()方法对 request.getInputStream()或request.getReader()没有冲突,
即使已经调用了 request.getParameter()方法也可以通过调用request.getInputStream()或request.getReader()得到表单中的数据,
而request.getInputStream()和request.getReader()在同一个响应中是不能混合使用的,如果混合使用就会抛异常。


2.对于JSP页面跳转中的转发和重定向的理解

(1).一种是重定向跳转,超连接<a>就是一种重定向跳转,这样的跳转request对象是传不到下一个页面的,下一个页面得到的request对象是一个新的对象,而不是上一个页面传过来的就得不到上一个页面的数据.如果你想通过这种方法跳转的话,那就要用<ahref="a.jsp?参数名=参数值">,在下一个页面用request.getParameter("参数名")得到值
(2).另一种跳转是转发,这种跳转request对象就被传往下一个页面,可以用<jsp:forward page="/a.jsp"/>,这样你可以把参数用request.setAttribute()方法存进request对象里,再到下一个页面用request.getAttribute()得到参数.
两种方法最明显的区别是,重定向跳转当你从a.jsp到b.jsp页面的时候,地址栏的地址已经由a.jsp变为b.jsp;相反,转发跳转当你从a.jsp到b.jsp页面的时候,地址栏仍然是a.jsp的地址。并且转发中的request的值始终有效,而重定向中的request已经失效,所以对于转发与重定向的使用一定要注意。
3.JSP页面传值的方法
①. 通过Form表单提交传值
request.getParameter("")来获取参数
②. 通过隐藏域传值
通过在表单中加入一个隐藏域来提交到服务器端,这种方式的好处是可以在客户端加入一些自己想要加入的数,以便得到相应的值
<input type="hidden" name="id" value="<%=request.getParameter("id")%>"/>
③. 服务器端取值
request.getParameter("")
④. 通过URL传值
<a href="xx.jsp?id=xx&name=xx"></a>后面的?是要传递的参数和值,参数与参数之间用&进行分离
⑤. 通过JavaBean传值(通过Java中的自省机制,将所有的表单值传入到一个JavaBean中
注意:1.在创建的javaweb工程中,存放jsp的文件夹一定要放在与WEB-INF同目录下,否则在页面跳转中会报404错误,同理,js,img,css都要放在与WEB-INF同目录下,否则会报错。本人深有体会,经过无数次的试验与测试才找到问题所在。(我用的是intelliJ)
   2. 通过超链接传递过去的值,使用的是get请求


原创粉丝点击