JSP内置对象requset学习

Jsp的内置对象

内置对象类型属性范围
requestjavax.servlet.http.HttpServletRequestrequest
responsejavax.servlet.http.HttpServletResponsepage
sessionjavax.servlet.http.HttpSessionsession
applicationjavax.servlet.ServletContextapplication
configjavax.servlet.ServletConfigpage
pageContextjavax.servlet.jsp.PageContextpage
outjavax.servlet.jsp.JspWriterpage
pagejava.lang.Objectpage
exceptionjava.lang.Throwablepage

 

request:服务器端接受客户端以HTTP方式传送给它的数据

          以便处理客户端的请求实现客户端/服务器端的交互!

重要方法:Methods inherited from interface   javax.servlet.ServletRequest

                   getParameter , getParameterNames , getParameterValues

接受的数据中如何处理乱码问题:再编码

demo:request01.jsp  发送请求, request02.jsp接受请求

request01.jsp

<%@ page contentType="text/html;charset=gb2312" %>
<html>
  <body>
   <form action="request02.jsp" method="post">
     英文名:<input type="text" name="en_name"></br>
     中文名:<input type="text" name="cn_name"></br>
     <input type="submit" value="提交">
  </form>
  </body>
</html>

request02.jsp

<%@ page contentType="text/html;charset=gb2312" %>
<html>
	<body>
	   英文名:<%=request.getParameter("en_name")%></br>
	   中文名:<%=request.getParameter("cn_name")%></br>
	   <!-- 不处理编码 -->
	   中文名:<%=new String(request.getParameter("cn_name").getBytes("ISO-8859-1"))%></br>
	   <!-- 进行再次编码 -->
  </body>
</html>

request02.jsp输出结果

英文名:terry                        -->英文不需要处理
中文名:??????                  -->没有再编码处理:输出乱码
中文名:李艺辉                    -->再编码处理:正常输出中文
当然也可以在request.getParameter之前

通过request.setCharacterEncoding("gb2312")处理中文编码问题

此种设置方法会设置整个页面统一的页面请求编码

 

对于复选框及多个下拉列表框时,接受值因为是返回多个值

所以使用java.lang.String[] getParameterValues(java.lang.String name),然后遍历数组输出结果!

 

隐藏域和地址重写的应用:request03.jsp发送请求,request04.jsp处理请求

request03.jsp

<%@ page contentType="text/html;charset=gb2312" %>
<html>
	<body>
	   <form action="request04.jsp" method="post">
	     英文名:<input type="text" name="en_name"></br>
	     中文名:<input type="text" name="cn_name"></br>
	     诗人:  <input type="checkbox" name="*poet" value="李白">李白 <!--多值用*区别,处理数组-->
		   <input type="checkbox" name="*poet" value="杜甫">杜甫 
		   <input type="checkbox" name="*poet" value="疯子">疯子
		   <input type="hidden" name="hiddenvalue" value="hello hiddenman"></br>
	     <input type="submit" value="提交"> 
	   </form>
	   <a href="request04.jsp?redirect=come from herf&action=fuck you">连接重定向</a>
  </body>
</html>

request04.jsp

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<html>
  <body>
   你的IP为:<%=request.getRemoteAddr()%></br>	 
   <%
      request.setCharacterEncoding("gb2312");
      Enumeration enu = request.getParameterNames();
   %>
   <%
      while(enu.hasMoreElements()){
  	String name = (String)enu.nextElement();
   %>
         <%=name%>:
   <%
	if(name.startsWith("*")){
            String tempValue[] = request.getParameterValues(name);
	   for(int i=0;i<tempValue.length;i++){
   %>
              <%=tempValue[i]%>、
   <%			
       	  }
   %>
         </br>
   <%
	}else{
   %>
           <%=request.getParameter(name)%></br>
   <%	
	}
       }
  %>	 
   </body>
</html>
result:

总结:只要是客户端的信息,服务器端都可以通过request对象取得,但是需要注意字符编码的问题!

      更多关于request内置对象的方法应用请参阅J2EE的手册 

javax.servlet.http 
Interface HttpServletRequest

All Superinterfaces:
ServletRequest


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值