HttpServletRequest的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请求信息的取得
当请求来到服务器时,Web 容器会创建HttpServletRequest 实例来包装请求中的相关信息,HttpServletRequest 接口继承自ServletRequest 接口,后者定义了取得一些通用请求信息的方法,如getParameter()、getInputStream()等方法,前者定义了取得HTTP 相关信息的方法,例如getHeader()、getMethod()等。
处理请求时最基本的就是取得请求参数: getQueryStirng() 取得HTTP 请求的查询字符串 getParameter() 指定请求参数来取得对应的值 getParameterValues() 取得一个String 数组,数组元素代表被选择选项的值 getHeader() 指定标头后可以返回字符串值 getHeaderNames() 取得浏览器所发出的所有标头值
一个简单地例子:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.io.IOException; import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet ("/ShowHeader")
public class ShowHeader extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter();
out.println("
"); out.println(""); out.println(" "); out.println(""); out.println(""); out.println("
Servlet Header at " + request.getContextPath() + "
"); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements()) { String param = e.nextElement(); String value = request.getHeader(param); out.print(param + ": " + value + "
"); } out.println(""); out.println(""); out.close(); } protected void
doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } } 中文处理问题
若要传送给浏览器UTF-8编码的文字,可以执行如下语句:
response.setContentType("text/html;charset=utf-8");
若接收请求时也使用UTF-8编码字符串,则可以在取得请求之前,执行以下语句: request.setCharacterEncoding("utf-8");
另一个处理编码的方式是取得请求值之后,通过String 的getBytes()取得指定编码的该字符串的字节数组,然后再重新构造utf-8字符串,执行以下语句:
?
1 2 String username =
request.getParameter("name");
String username = new String(user.getBytes("ISO-8859-1"),
"utf-8");
如果java 原始代码文件中编写了中文字符串,则编译.java 时,可以指定-encoding 选项来指定编码,例如:
javac -encoding itf-8 Main.java
在编写JSP 时,若使用utf-8编码,可以使用以下语句,告知Web 容器将.jsp 转移为.java 以及进行编译时,必须使用utf-8编码格式:
%@page pageEncoding="UTF-8"%
以下是一个简单的例子:
myform.html:
?
1 2
姓名:
邮件:
你喜爱的宠物代表:
Pet.java: