• Javaweb编程之servlet基础


    Javaweb编程之servlet基础

    网页分为静态网页和动态网页,静态网页主要使用HTML+CSS+JavaScript编写,很多时候这样的网页都是没有交互能力的。而servlet就是一项能让网页“动起来”的技术。

    什么是servlet?

    • Servlet是sun公司用于开发动态Web的一门技术;

    • Servlet 的载体是 Web 服务器或着应用服务器,它是作为来自 Web 浏览器或其他HTTP客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层;

    • Servlet技术可以实现收集来自网页中各种表单的信息(这里只面向用户输入的信息),展现来自于各类数据库的信息,最重要的是可以创建动态的网页效果;

    • Sun公司在API【操作系统向编程人员提供了“程序与操作系统的接口” ,简称程序接口,又称应用程序接口 API(Application Programming Interface)】中提供了一个接口,叫做“Servlet”,我们把实现了Servlet接口的Java程序叫做Servlet;

    • 开发一个Servlet程序仅需要两个步骤:

      • 编写一个Java类,并且实现Servlet接口(implements);

      • 将开发完成的实现了Servlet接口的Java类部署到web服务器中即可。

    编写一个Servlet

    1. 构建一个普通maven项目;

    2. 删除本maven项目的src目录(用不到,可以删除);

    3. 在pom.xml中导入相关可能会用到的jar包:

      <dependencies>
              <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
              <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet-api</artifactId>
                  <version>4.0.1</version>
                  <scope>provided</scope>
              </dependency><!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
              <dependency>
                  <groupId>javax.servlet.jsp</groupId>
                  <artifactId>javax.servlet.jsp-api</artifactId>
                  <version>2.3.3</version>
                  <scope>provided</scope>
              </dependency>
          </dependencies>
    4. 在刚刚新建的maven空项目中新建一个maven模块(new-->module),此时需要选择webapp这一项;

    5. 新建一个普通的Java类,并且实现Servlet接口(这里继承HttpServlet,点击自动导入jar包);

      1. 实现Servlet有两种继承的方式:

        1、继承HttpServlet

        2、继承GenericServlet

      2. Servlet、HTTPServlet、GenericServlet的关系

      3. package psl.wong.servlet;
        ​
        import javax.servlet.ServletException;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        import java.io.PrintWriter;
        ​
        public class HelloServlet extends HttpServlet {
            @Override
            protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                PrintWriter writer = resp.getWriter();  //获得响应流
                writer.print("Hello Servlet.");
            }
        ​
            @Override
            protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                super.doPost(req, resp);
            }
        }
    6. 编写Servlet的映射

      由于我们编写的是Java程序,而我们最终是要通过浏览器来访问的,同时浏览器又需要连接web服务器。因此我们需要将我们写的Servlet注册在web服务中,并且给他一个浏览器能够正常访问的路径地址:

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
               version="4.0"
               metadata-complete="true"><!-- 注册Servlet -->
        <servlet>
          <servlet-name>hello</servlet-name>
          <servlet-class>psl.wong.servlet.HelloServlet</servlet-class>
        </servlet><!-- Servlet的映射路径(请求路径) -->
        <servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>/hello</url-pattern>
        </servlet-mapping></web-app>
    7. 配置Tomcat

    8. 启动测试

      <html>  <!-- index.jsp中的内容 -->
      <body>
      <h2>Hello World!</h2>
      </body>
      </html>
    1. 测试结果:

      http://localhost:8080/Servlet_01_war/   //路径
      Hello world! //结果
      http://localhost:8080/Servlet_01_war/hello  //路径
      Hello Servlet. //结果

  • 相关阅读:
    #333 Div2 Problem B Approximating a Constant Range(尺取法)
    苦逼的单身狗(玄乎的尺取大法)
    欧拉项目第四题之三位数之积数的最大回数
    欧拉项目第三题之最大质数因子
    关于尺取法的认识与简单例题
    codeforces 980B Marlin
    康托展开和逆康托展开
    Chrome控制台中Network的Preview与Response区别
    配置Express中间件
    Express中间件简介
  • 原文地址:https://www.cnblogs.com/awong18/p/13236365.html
Copyright © 2020-2023  润新知