[关闭]
@Beeder 2017-11-29T22:24:09.000000Z 字数 4039 阅读 554

关于servlet

javaWeb


Servlet 简介

    Servlet是运行在服务器端的一小的Java程序,接收和响应从客户端发送请求.

Servlet在web应用中的位置

    Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

    使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

servlet的生命周期

  1. void init(ServletConfig config):初始化
  2. /*
  3. * 初始化方法
  4. * 执行者:服务器
  5. * 执行次数:一次
  6. * 执行时机:默认第一次访问的时候
  7. */
  8. void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
  9. /*
  10. * 服务
  11. * 执行者:服务器
  12. * 执行次数:请求一次执行一次
  13. * 执行时机:请求来的时候
  14. */
  15. void destroy():销毁
  16. /*
  17. * 销毁
  18. * 执行者:服务器
  19. * 执行次数:只执行一次
  20. * 执行时机:当servlet被移除的时候或者服务器正常关闭的时候
  21. */
  22. public void doGet(HttpServletRequest request,
  23. HttpServletResponse response)
  24. throws ServletException, IOException {
  25. // Servlet 代码
  26. /*
  27. * GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。
  28. */
  29. }
  30. public void doPost(HttpServletRequest request,
  31. HttpServletResponse response)
  32. throws ServletException, IOException {
  33. // Servlet 代码
  34. /*
  35. * POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。
  36. */
  37. }

架构图

servlet的简单使用

  1. // 导入必需的 java 库
  2. import java.io.*;
  3. import javax.servlet.*;
  4. import javax.servlet.http.*;
  5. //继承HttpServlet类
  6. public class HelloServlet extends HttpServlet{
  7. //处理 GET 方法请求的方法
  8. @Override
  9. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  10. System.out.println("GET请求已收到............");
  11. // 接受GET参数
  12. String value = req.getParameter("username");
  13. // 设置响应内容类型
  14. // response.setContentType("text/html");
  15. response.setContentType("text/html;charset=utf-8");
  16. // 实际的逻辑是
  17. PrintWriter out = response.getWriter();
  18. out.println("<h1>" +"值:"+ value + "</h1>");
  19. }
  20. //处理 POST 方法请求的方法
  21. @Override
  22. public void doPost(HttpServletRequest request,
  23. HttpServletResponse response) throws ServletException, IOException {
  24. System.out.println("POST请求已收到............");
  25. }
  26. }

配置web.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <servlet>
  8. <!-- 类名 -->
  9. <servlet-name>HelloServlet</servlet-name>
  10. <!-- 所在的包 -->
  11. <servlet-class>com.runoob.test.HelloServlet</servlet-class>
  12. </servlet>
  13. <servlet-mapping>
  14. <servlet-name>HelloServlet</servlet-name>
  15. <!-- 访问的网址 -->
  16. <url-pattern>/TomcatTest/HelloServlet</url-pattern>
  17. </servlet-mapping>
  18. </web-app>

使用表单的GET方法实例

使用 HTML 表单和提交按钮传递两个值。我们将使用相同的 Servlet HelloForm 来处理输入。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>GET方法实例</title>
  6. </head>
  7. <body>
  8. <!-- 使用POST方法:method="POST" -->
  9. <!--<form action="HelloForm" method="POST">-->
  10. <form action="HelloForm" method="GET">
  11. 网址名:<input type="text" name="name">
  12. <br />
  13. 网址:<input type="text" name="url" />
  14. <input type="submit" value="提交" />
  15. </form>
  16. </body>
  17. </html>
  1. package com.runoob.test;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. /**
  10. * Servlet implementation class HelloForm
  11. */
  12. @WebServlet("/HelloForm")
  13. public class HelloForm extends HttpServlet {
  14. private static final long serialVersionUID = 1L;
  15. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  16. // 设置响应内容类型
  17. response.setContentType("text/html;charset=UTF-8");
  18. PrintWriter out = response.getWriter();
  19. String title = "使用 POST 方法读取表单数据";
  20. // 处理中文
  21. String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
  22. String docType = "<!DOCTYPE html> \n";
  23. out.println(docType +
  24. "<html>\n" +
  25. "<head><title>" + title + "</title></head>\n" +
  26. "<body bgcolor=\"#f0f0f0\">\n" +
  27. "<h1 align=\"center\">" + title + "</h1>\n" +
  28. "<ul>\n" +
  29. " <li><b>站点名</b>:"
  30. + name + "\n" +
  31. " <li><b>网址</b>:"
  32. + request.getParameter("url") + "\n" +
  33. "</ul>\n" +
  34. "</body></html>");
  35. }
  36. }

设置TomcatTest项目下对应的 web.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app>
  3. <servlet>
  4. <!-- 类名 -->
  5. <servlet-name>HelloForm</servlet-name>
  6. <servlet-class>com.runoob.test.HelloForm</servlet-class>
  7. </servlet>
  8. <servlet-mapping>
  9. <!-- 访问的网址 -->
  10. <servlet-name>HelloForm</servlet-name>
  11. <url-pattern>/TomcatTest/HelloForm</url-pattern>
  12. </servlet-mapping>
  13. </web-app>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注