jsp中四种通报参数的方法,我以为总结一下,挺好的,以备后用!
1、form表单
2、request.setAttribute();和request.getAttribute();
3、超链接:<a herf=\"大众index.jsp\公众?a=a&b=b&c=c>name</a>
1、form表单
form.jsp:
<%@page contentType=\"大众text/html; charset=GB2312\公众%> <html> <head> <title> form.jsp file </title> </head> <body style=\"大众background-color:lightblue\"大众> <h2 style=\"大众font-family:arial;color:red;font-size:25px;text-align:center\"大众>登录页面</h2> <form action=\"大众result.jsp\公众 method=\公众get\公众 align=\公众center\"大众> 姓名:<input type=\公众text\"大众 name=\"大众name\公众 size=\公众20\"大众 value=\"大众\公众 maxlength=\"大众20\公众><br/> 密码:<input type=\"大众password\"大众 name=\公众password\公众 size=\"大众20\"大众 value=\"大众\公众 maxlength=\公众20\公众><br/> <!--在爱好前空一个空格,是为了排版好看些--> 爱好:<input type=\"大众checkbox\"大众 name=\"大众hobby\公众 value=\"大众唱歌\"大众>唱歌 <input type=\"大众checkbox\公众 name=\公众hobby\"大众 value=\"大众足球\"大众>足球 <input type=\"大众checkbox\公众 name=\"大众hobby\"大众 value=\公众篮球\"大众>篮球<br/><br/> <input type=\"大众submit\"大众 name=\"大众submit\"大众 value=\"大众登录\"大众> <input type=\"大众reset\"大众 name=\公众reset\"大众 value=\"大众重置\公众><br/> </form> </body> </html>
result.jsp:
1 <%@page language=\"大众java\"大众 import=\公众java.util.\公众 pageEncoding=\"大众GB2312\公众%> 2 <html> 3 <head> 4 <title> 5 result.jsp file 6 </title> 7 </head> 8 9 <body bgcolor=\公众ffffff\"大众> 10 <% 11 request.setCharacterEncoding(\公众GB2312\"大众); 12 13 String name=request.getParameter(\"大众name\"大众); 14 name=new String(name.getBytes(\"大众iso-8859-1\"大众),\"大众GB2312\"大众); 15 16 String pwd=request.getParameter(\"大众password\"大众); 17 String[] hobby=request.getParameterValues(\"大众hobby\"大众);//把稳这里的函数是getParameterValues()接管一个数组的数据 18 19 %> 20 21 <% 22 if(!name.equals(\"大众\公众) && !pwd.equals(\"大众\公众)) 23 { 24 %> 25 26 您好!
登录成功!
<br/> 27 姓名:<%=name%><br/> 28 密码:<%=pwd%><br/> 29 爱好:<% 30 for(String ho: hobby) 31 { 32 ho=new String(ho.getBytes(\"大众iso-8859-1\"大众),\"大众GB2312\公众); 33 out.print(ho+\"大众 \"大众); 34 } 35 %> 36 <% 37 } 38 else 39 { 40 %> 41 请输入姓名或密码!
42 <% 43 } 44 %> 45 </body> 46 </html>
把稳:form表单的提交办法为get,在参数通报时会碰着中文乱码的问题,一个大略的办理方法是,将接管到的字符串先转换成一个byte数组,再用String布局一个新的编码格式的String,如:
1 String name=request.getParameter(\公众name\"大众); 2 name=new String(name.getBytes(\公众iso-8859-1\公众),\"大众GB2312\"大众);
如果form表单的提交办法为post,办理乱码问题的大略办法是,利用 request.setCharacterEncoding(\公众GB2312\公众);设置request的编码办法。
为什么会涌现中文乱码问题呢?由于Tomcat做事器默认的系统编码办法为iso- 8859-1,你通报参数给做事器时,利用的是默认的iso-8859-1的编码办法,但是做事器向你返复书息时,是按page指令中设置的编码办法, 如:<%@page language=\"大众java\"大众 import=\"大众java.util.\公众 pageEncoding=\公众GB2312\"大众%>,这样就稠浊了两种编码办法,以是会涌现乱码,以是办理之道便是统一通报和吸收的编码办法。
2、request.setAttribute()和request.getAttribute()
set.jsp:
<%@page contentType=\"大众text/html; charset=GB2312\"大众%> <html> <head> <title> set.jsp file </title> </head> <body style=\"大众background-color:lightblue\"大众> <% request.setAttribute(\"大众name\公众,\"大众心雨\"大众); %> <jsp:forward page=\公众get.jsp\公众/> </body> </html>
get.jsp:
<%@page contentType=\"大众text/html; charset=GB2312\"大众%> <html> <head> <title> get.jsp file </title> </head> <body style=\"大众background-color:lightblue\"大众> <% out.println(\"大众通报过来的参数是:\公众+request.getAttribute(\"大众name\公众)); %> </body> </html>
request.setAttribute()和request.getAttribute()是合营<jsp:forward>或是include指令来实现的。
3、超链接:<a herf=\"大众index.jsp?a=a&b=b&c=c\公众>name</a>
href.jsp:
<%@page contentType=\"大众text/html; charset=GB2312\"大众%> <html> <head> <title> href.jsp file </title> </head> <body style=\"大众background-color:lightblue\"大众> <a href=\"大众getHerf.jsp?name=心雨&password=123\公众>通报参数</a> </body> </html>
getHref.jsp:
<%@page contentType=\公众text/html; charset=GB2312\公众%> <html> <head> <title> getHref.jsp file </title> </head> <body style=\"大众background-color:lightblue\"大众> <% String name=request.getParameter(\公众name\公众); name=new String(name.getBytes(\"大众iso-8859-1\"大众),\公众gb2312\公众); out.print(\公众name:\"大众+name); %> <br/> <% out.print(\"大众password:\"大众+request.getParameter(\公众password\"大众)); %> </body> </html>
这种通报参数的方法和form表单的get办法类似,是通过地址栏通报的参数,其乱码办理方法也和form 的get办法一样。
4、<jsp:param>
param.jsp:
<%@page contentType=\"大众text/html; charset=GB2312\公众%> <html> <head> <title> param.jsp file </title> </head> <body style=\公众background-color:lightblue\"大众> <%request.setCharacterEncoding(\"大众GB2312\"大众);%> <jsp:forward page=\"大众getParam.jsp\"大众> <jsp:param name=\"大众name\"大众 value=\"大众心雨\公众/> <jsp:param name=\"大众password\公众 value=\公众123\"大众/> </jsp:forward> </body> </html>
getParam.jsp:
<%@page contentType=\"大众text/html; charset=GB2312\"大众%> <html> <head> <title> getParam.jsp file </title> </head> <body style=\"大众background-color:lightblue\"大众> <% String name=request.getParameter(\公众name\"大众); out.print(\"大众name:\"大众+name); %> <br/> <% out.print(\"大众password:\公众+request.getParameter(\"大众password\"大众)); %> </body> </html>
这里创造了一个奇怪的问题,还是在中文乱码的问题上,在form表单的例子中,如果通报办法为post,则只须要在吸收参数的页面设置request的编 码办法就可以了,即request.setCharacterEncoding(\公众GB2312\"大众);,把稳是在吸收参数的页面,如果将该句放到form 表单里,那么不起浸染,仍旧是乱码。而在本例中,为了使通报的参数不涌现乱码,却是将 request.setCharacterEncoding(\"大众GB2312\"大众);放在发送参数的页面中,才会正常显示中文,放在吸收参数的页面中,不起 浸染。大概这便是<jsp:param>和form表单通报参数不同的地方。为什么会有这个不同呢?可能是由于form表单中的参数是由客户 端传送到做事端上的,须要经由一个request的打包过程,但是<jsp:param>通报的参数本身便是在做事器真个,不须要经历由客户 端到做事端这么一个过程,但是做事器里的参数通报是这么回事呢?这个问题,我不知道了!
真是知识是一个扩大的圆圈,你知道的越多,那么不知道的就越多!
努 力吧!