Javaweb编程之servlet基础

Posted 一名小和尚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. //结果

以上是关于Javaweb编程之servlet基础的主要内容,如果未能解决你的问题,请参考以下文章

Servlet基础之ServletContext应用

JavaWeb之JSP

javaWeb基础之Servlet

javaweb核心之页面技术

JavaWeb详解(第一篇)之Servlet基础简介

[Java拾遗三]JavaWeb基础之Servlet