Servlet第三方jar包使用3(Servlet获取form表单中的多有元素以及,请求转发,请求重定向,请求包含)

写一个form表单然后获取表单中的所有元素

<!DOCTYPE html>
<html>
  <head>
    <meta charset = "UTF-8">
    <title>Insert title here</title>
  </head>
   <body>
   <form action = "#" method="">
   用户名<input type = "text" name = "username"></br>
   密码<input type = "text" name = "password"></br>
   男 <input type = "radio" name = "sex" checked ="checked" value = "男"></br>
   女<input type="radio" name ="sex" value="女"></br>
   <input type "checkbox" name ="hobby" value= "篮球"篮球>
    <input type "checkbox" name ="hobby" value= "唱歌"唱歌>
     <input type "checkbox" name ="hobby" value= "画画"画画>
     </br>
     <select name = "city">
     <option>---请选择</option>
     <option value ="sh">上海</option>
     <option value ="bj">背景</option>
     <option value = "sz">深圳</option>
     <select>
     <input type = "submit" value="提交">
   </form>

   </body>
</html>

配置Demo01 Servlet的基本属性

 <servlet>
  <servlet-name>demo01</servlet-name>
  <servlet-class>com.lanou3g.Demo01</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>demo01</servlet-name>
  <url-pattern>/demo01</url-pattern>
  </servlet-mapping>

利用Srevlet获取form表单的所有元素

```
public class Demo01 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置响应编码格式
        response.setContentType("text/html;charset=UTF-8");
        //告诉服务器  请求的内容是什么编码格式的
        request.setCharacterEncoding("UTF-8");
        //获取表单中所有提交的属性
        String username = request.getParameter("username");
        System.out.println(username);
        String password = request.getParameter("password");
        System.out.println(password);
        String sex = request.getParameter("sex");
        System.out.println(sex);
        //获取复选框的传递的值
        String[] hobbys = request.getParameterValues("hobby");
        if (hobbys!=null) {
            for (String hString : hobbys) {
                System.out.println(hString);
            }
        }
        String city = request.getParameter("city");         

    }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

第二种获取form表单中的方法

public class Demo01 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                    //设置响应编码格式
            response.setContentType("text/html;charset=UTF-8");
            //告诉服务器  请求的内容是什么编码格式的
            request.setCharacterEncoding("UTF-8");
            //利用getParameterNames()打印表单中所有提交的属性
            Enumeration<String> names = request.getParameterNames();
            while (names.hasMoreElements()) {
            String name =names.nextElement();
            //根据enumeration取出对应的值
            String[] strings = request.getParameterValues(name);
            for (String string : strings) {
                    System.out.println(string);
            }
            }       


    }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

第三种获取form表单中的所有元素

public class Demo01 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置响应编码格式
        response.setContentType("text/html;charset=UTF-8");
        //告诉服务器  请求的内容是什么编码格式的
        request.setCharacterEncoding("UTF-8");
        //把表单封装到对象中
        //参数1 要封装的对象 注意:该对象要符合javabean规范
        //参数2 map集合
        User user = new User();
        Map<String, String[]> map = request.getParameterMap();
        try {
            BeanUtils.populate(user, map);
            System.out.println(user);
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       


    }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

配置Demo02 Servlet的基本属性

<servlet>
  <servlet-name>demo02</servlet-name>
  <servlet-class>com.lanou3g.Demo02</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>demo02</servlet-name>
  <url-pattern>/demo02</url-pattern>
  </servlet-mapping>

配置Demo03 Servlet的基本属性

 <servlet>
  <servlet-name>demo03</servlet-name>
  <servlet-class>com.lanou3g.Demo03</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>demo03</servlet-name>
  <url-pattern>/demo03</url-pattern>
  </servlet-mapping>

请求转发 : 请求转发只能访问服务器内部. 无论你怎么写项目都在 路径下运行

public class Demo02 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //请求转发  获取转发器
        //请求转发只是服务器内部的访  
        //不管你怎么写, 始终都在项目路径下
         RequestDispatcher dispatcher= request.getRequestDispatcher("/demo03");
         dispatcher.forward(request,response);


    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
public class Demo03 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("我是dem03");

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

请求重定向: 请求重定向是两次请求 不能获取的域中的值.
请求重定向既可以获取本地服务器也可以获取非本地服务器

public class Demo02 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //请求重定向  查看是否能获取域中的值
            //重定向是两次请求 不能获取到request域中的值
            //请求转发能不能 访问本地服务器以外的服务器
            //重定向既可以访问   本地服务器  也可以访问 非本地服务器
        response.sendRedirect("/SH-web-servlet03/demo03");
        // response.setHeader("location", "/SH-web-servlet03/demo03");
        response.setStatus(302);    

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
public class Demo03 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取request域中保存的值
        String name = (String)request.getAttribute("name");

        System.out.println("我是demo03." + name);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

请求包含 相当于把两个页面的响应合成了一个响应 再返回给浏览器

public class Demo02 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应编码格式
        response.setContentType("text/html;charset=UTF-8");
        //告诉服务器  请求的内容是什么编码格式的
        request.setCharacterEncoding("UTF-8");
        //获取字符流
        PrintWriter out = response.getWriter();

        //给request 域中 添加值
        request.setAttribute("name", "ssss");

        //请求包含
        //相当于把两个页面的响应合成一个响应  返回给浏览器
        //请求转发  浏览器只能响应一次数据
        request.getRequestDispatcher("/demo03").include(request, response);
            //响应一句话
        out.write("123");

        System.out.println("我是demo02的结尾 ");

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
public class Demo03 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("456");

                            //获取request域中保存的值
                            String name = (String)request.getAttribute("name");

                            System.out.println("我是demo03." + name);


    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

猜你喜欢

转载自blog.csdn.net/qq_36390044/article/details/79734546
今日推荐