jsp内置对象之request对象

jsp内置对象之request对象

使用request对象接收请求参数

  • 获得请求参数值的两种方法

    1. getParameter() //返回String类型
    2. getParameterValues() //返回String类型的数组
  • 一般采取form表单传递参数,form表单中有两个非常重要的属性

    1. action:指明表单提交后的数据提交跳转到指定页面并处理参数
    2. method:有两个值,分别是get和post,通常指定为post
      • 值为get时,在表单中设定的参数和参数值将附加到页面地址的末尾以参数的形式提交,不安全
  • form表单提交数据给getParameter.jsp页面

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html charset=utf-8">
    <title>ToGet</title>
    </head>
    <body>
     	<center>
     	 	<form action="getParameter.jsp" method="post">
     	 	 	<table>
     	 	 	 	<tr>
     	 	 	 	 	<td>姓名</td>
     	 	 	 	 	<td><input type="text" name="name" value=""></td> 	 	 	 	 	
     	 	 	 	</tr>
     	 	 	 	<tr>
     	 	 	 	 	<td>城市</td>
     	 	 	 	 	<td><input type="text" name="city" value=""></td> 	 	 	 	 	
     	 	 	 	</tr>
     	 	 	 	
     	 	 	 	<tr>
     	 	 	 	 	<td><input type="submit" value="提交"></td>
     	 	 	 	 	<td><input type="reset" value="重置"></td>
     	 	 	 	</tr>
     	 	 	</table>
     	 	</form>
     	</center>
    
    </body>
    </html>
    
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html charset=utf-8">
    <title>getParameter</title>
    </head>
    <body>
     	<center>
     	 	<%
     	 	String name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");
    //        String name= request.getParameter("name");
            String city= new String(request.getParameter("city").getBytes("ISO-8859-1"),"utf-8");
    //        String city= request.getParameter("city");
     	 	 	if(name!=null&&city!=null){
     	 	%>
     	 	  <p>Welcome <%=name %>,您所在的城市<%=city %></p>
     	 	<%
     	 	}
     	 	else{
     	 	%>
     	 	<p>欢迎访问本页面</p>
     	 	<%} %>
     	</center>
    </body>
    </html>
    

请求中文乱码的问题

  • 错误原因:请求信息所使用的字符集与页面使用的字符集不同
  • 3种解决方法
    1. 在接收请求的页面中规定请求字符编码的代码,如在上文中的getParameter.jsp页面中添加语句"request.setCharacterEncoding(“utf-8”)"
    2. 在取得参数值后,通过转码的方式将值转为合适的字符集,也就是上文中getParameter.jsp中采用的方法
    3. 编写一个Servlet过滤器,可以通过配置让过滤器解决所有请求字符集处理的问题,移植性强

获取请求的头部信息

  • 三种请求头部信息的相关方法
    1. getHeader()
    2. String getHeader(String name) :获取字符串型的表头信息
    3. int getIntHeader(String name) :获取整型的表头信息
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
  <head>
    <title>'getHeaders.jsp'</title>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  </head>
  
  <body >
	       <%
	       	  Enumeration<String> enumeration = request.getHeaderNames();
	       	  while(enumeration.hasMoreElements()){
	       	      String name = enumeration.nextElement();
	       	      String value = request.getHeader(name);
	       	      if(value==null||"".equals(value)){
	       	      	  value="空字符串";
	       	      }
	        %>
	            <p>表头名称:<%=name %>&nbsp;&nbsp;对应的值:<%=value %></p>
	         <%} %>
  </body>
</html>
上一篇:自动删除 Elasticsearch 索引


下一篇:python3 迭代器