JAVA基础(六)之Servlet

Servlet之HttpServletRequest

(二)HttpServletRequest
   HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
(1)获取客户端提交的表单信息
      常用方法: getParameter(String)方法 (常用), getParameterValues(String name)方法 (常用)
      有如下表单:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



    Html的Form表单元素

Html的Form表单元素
编  号(文本框):
用户名(文本框):
密  码(密码框):
性  别(单选框):
部  门(下拉框):
兴  趣(复选框): 唱歌 游泳 跳舞 编程 上网
说  明(文本域):
     在Form表单中填写数据,然后提交到RequestDemo03这个Servlet进行处理,填写的表单数据如下:
package gacl.request.study;
import java.io.IOException;
import java.text.MessageFormat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @author gacl
 * 获取客户端通过Form表单提交上来的参数
 */
public class RequestDemo03 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //客户端是以UTF-8编码提交表单数据的,所以需要设置服务器端以UTF-8的编码进行接收,否则对于中文数据就会产生乱码
        request.setCharacterEncoding("UTF-8");
        /**
         * 编  号(文本框):
           
         */
        String userid = request.getParameter("userid");//获取填写的编号,userid是文本框的名字,
        /**
         * 用户名(文本框):
         */
        String username = request.getParameter("username");//获取填写的用户名
        /**
         * 密  码(密码框):
         */
        String userpass = request.getParameter("userpass");//获取填写的密码
        String sex = request.getParameter("sex");//获取选中的性别
        String dept = request.getParameter("dept");//获取选中的部门
        //获取选中的兴趣,因为可以选中多个值,所以获取到的值是一个字符串数组,因此需要使用getParameterValues方法来获取
        String[] insts = request.getParameterValues("inst");
        String note = request.getParameter("note");//获取填写的说明信息
        String hiddenField = request.getParameter("hiddenField");//获取隐藏域的内容
        
        String instStr="";
        /**
         * 获取数组数据的技巧,可以避免insts数组为null时引发的空指针异常错误!
         */
        for (int i = 0; insts!=null && i < insts.length; i++) {
            if (i == insts.length-1) {
                instStr+=insts[i];
            }else {
                instStr+=insts[i]+",";
            }
        }
        
        String htmlStr = "" +
                            "" +
                            "" +
                            "" +
                            "" +
                            "" +
                            "" +
                            "" +
                            "" +
                        "
填写的编号:{0}
填写的用户名:{1}
填写的密码:{2}
选中的性别:{3}
选中的部门:{4}
选中的兴趣:{5}
填写的说明:{6}
隐藏域的内容:{7}
"; htmlStr = MessageFormat.format(htmlStr, userid,username,userpass,sex,dept,instStr,note,hiddenField); response.setCharacterEncoding("UTF-8");//设置服务器端以UTF-8编码输出数据到客户端 response.setContentType("text/html;charset=UTF-8");//设置客户端浏览器以UTF-8编码解析数据 response.getWriter().write(htmlStr);//输出htmlStr里面的内容到客户端浏览器显示 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
(2)Request实现请求转发
<1>通过ServletContext的getRequestDispatcher(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
RequestDispatcher reqDispatcher =this.getServletContext().getRequestDispatcher("/test.jsp");
reqDispatcher.forward(request, response);
<2> 通过request对象提供的getRequestDispatche(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
request.getRequestDispatcher("/test.jsp").forward(request, response);
<3>请求重定向和请求转发的区别

一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发/307。
一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源进行处理,称之为请求重定向/302。

转自http://www.cnblogs.com/xdp-gacl/p/3798347.html


你可能感兴趣的:(JAVA基础(六)之Servlet)