程序源代码下载

Get请求与Post请求

请求方法

Post常用于安全性要求较高的功能或者服务器“写”操作

  • 如:用户注册、登录、更新个人资料等

    请求参数的发送与接收

  • 请求参数是指浏览器通过请求向Tomcat提交的数据

  • 请求参数通常是用户输入的数据,待Servlet进行处理
  • 参数名1=值1&参数名2=值2&参数名n=值n=…

    Servlet接收Get参数

    ```java package com.ouchaochao;

import javax.servlet.; import javax.servlet.http.; import javax.servlet.annotation.*; import java.io.IOException; import java.io.PrintWriter;

@WebServlet(name = “sampleServlet”, value = “/sampleServlet”) public class sampleServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String methodName = request.getMethod(); String name = request.getParameter(“name”); String mobile = request.getParameter(“mobile”); String sex = request.getParameter(“sex”); String[] specs = request.getParameterValues(“spec”);

  1. PrintWriter out = response.getWriter();//向浏览器输出的数据流
  2. out.println("<h1>method:" + methodName + "</h1>");
  3. out.println("<h1>name:" + name + "</h1>");
  4. out.println("<h1>mobile:" + mobile + "</h1>");
  5. out.println("<h1>sex:" + sex + "</h1>");
  6. for (int i = 0; i < specs.length; i++) {
  7. out.println("<h2>spec:" + specs[i] + "</h2>");
  8. }
  9. }

}

  1. <a name="HC203"></a>
  2. #### web.xml配置
  3. ```java
  4. <?xml version="1.0" encoding="UTF-8"?>
  5. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  8. version="4.0">
  9. <servlet>
  10. <servlet-name>hello</servlet-name>
  11. <servlet-class>com.ouchaochao.helloServlet</servlet-class>
  12. </servlet>
  13. <servlet>
  14. <servlet-name>sample</servlet-name>
  15. <servlet-class>com.ouchaochao.sampleServlet</servlet-class>
  16. </servlet>
  17. <servlet-mapping>
  18. <servlet-name>hello</servlet-name>
  19. <url-pattern>/hello</url-pattern>
  20. </servlet-mapping>
  21. <servlet-mapping>
  22. <servlet-name>sample</servlet-name>
  23. <url-pattern>/sample</url-pattern>
  24. </servlet-mapping>
  25. </web-app>

student.html配置

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>学员信息登记表</title>
  6. </head>
  7. <body>
  8. <h1>学员信息登记表</h1>
  9. <form action="/testServlet/sample" method="get" >
  10. 姓名:<input name="name"/>
  11. <br/>
  12. 电话:<input name="mobile"/>
  13. <br/>
  14. 性别:
  15. <select name="sex" style="width:100px;padding:5px;">
  16. <option value="male" >男</option>
  17. <option value="female">女</option>
  18. </select>
  19. <br/>
  20. 特长:
  21. <input type="checkbox" name="spec" value="English"/>英语
  22. <input type="checkbox" name="spec" value="Program"/>编程
  23. <input type="checkbox" name="spec" value="Speech"/>演讲
  24. <input type="checkbox" name="spec" value="Swimming"/>游泳
  25. <br/>
  26. <input type="submit" value="提交">
  27. <br/>
  28. </form>
  29. </body>
  30. </html>

结果展示

image.png
点击提交后页面跳转结果如下:
image.png

Servlet接受Post参数

  1. package com.ouchaochao;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import javax.servlet.annotation.*;
  5. import java.io.IOException;
  6. import java.io.PrintWriter;
  7. @WebServlet(name = "sampleServlet", value = "/sampleServlet")
  8. public class sampleServlet extends HttpServlet {
  9. @Override
  10. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  11. String methodName = request.getMethod();
  12. String name = request.getParameter("name");
  13. String mobile = request.getParameter("mobile");
  14. String sex = request.getParameter("sex");
  15. String[] specs = request.getParameterValues("spec");
  16. PrintWriter out = response.getWriter();//向浏览器输出的数据流
  17. out.println("<h1>method:" + methodName + "</h1>");
  18. out.println("<h1>name:" + name + "</h1>");
  19. out.println("<h1>mobile:" + mobile + "</h1>");
  20. out.println("<h1>sex:" + sex + "</h1>");
  21. for (int i = 0; i < specs.length; i++) {
  22. out.println("<h2>spec:" + specs[i] + "</h2>");
  23. }
  24. }
  25. }

web.xml配置

与Get的XML相同

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <servlet>
  7. <servlet-name>hello</servlet-name>
  8. <servlet-class>com.ouchaochao.helloServlet</servlet-class>
  9. </servlet>
  10. <servlet>
  11. <servlet-name>sample</servlet-name>
  12. <servlet-class>com.ouchaochao.sampleServlet</servlet-class>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>hello</servlet-name>
  16. <url-pattern>/hello</url-pattern>
  17. </servlet-mapping>
  18. <servlet-mapping>
  19. <servlet-name>sample</servlet-name>
  20. <url-pattern>/sample</url-pattern>
  21. </servlet-mapping>
  22. </web-app>

student.html配置

修改了

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>学员信息登记表</title>
  6. </head>
  7. <body>
  8. <h1>学员信息登记表</h1>
  9. <form action="/testServlet/sample" method="post" >
  10. 姓名:<input name="name"/>
  11. <br/>
  12. 电话:<input name="mobile"/>
  13. <br/>
  14. 性别:
  15. <select name="sex" style="width:100px;padding:5px;">
  16. <option value="male" >男</option>
  17. <option value="female">女</option>
  18. </select>
  19. <br/>
  20. 特长:
  21. <input type="checkbox" name="spec" value="English"/>英语
  22. <input type="checkbox" name="spec" value="Program"/>编程
  23. <input type="checkbox" name="spec" value="Speech"/>演讲
  24. <input type="checkbox" name="spec" value="Swimming"/>游泳
  25. <br/>
  26. <input type="submit" value="提交">
  27. <br/>
  28. </form>
  29. </body>
  30. </html>

结果展示

image.png
点击提交后页面跳转结果如下:
image.png

使用注解配置Servlet

可能有同学注意到了,在Servlet中有句注解,长的就像下面这个样子

@WebServlet(name = “sampleServlet”, value = “/sampleServlet”)

当在Servlet中写了有注解的情况下,我们不配置XML,也可以达到访问的效果,例如:

  1. package com.ouchaochao;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import javax.servlet.annotation.*;
  5. import java.io.IOException;
  6. @WebServlet(name = "Anno", value = "/Anno")
  7. public class Anno extends HttpServlet {
  8. @Override
  9. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  10. response.getWriter().println("I am annotation");
  11. }
  12. }

结果如下:
image.png

  • 注解简化了Web应用程序的配置过程
  • 使用注解配置了Servlet以后,web.xml文件中就不可以再配置相同访问的url,否则会报错;但是可以针对同一个Servlet再指定一个不同的访问URL