Java课题笔记~ Servlet编程

1.Servlet编程基础

(1)什么是Servlet

Servlet是基于Java语言的Web编程技术,部署在服务器端的Web容器里,获取客户端的访问请求,并根据请求生成响应信息返回给客户端。

创建Servlet的方式,有

如下图:一般创建Servlet都是通过继承HttpServlet来实现,如图中的HelloServlet。

(类图快捷键:Ctrl + Alt + U)

Java课题笔记~ Servlet编程_第1张图片

 1.创建一个基于Maven的web项目。

Java课题笔记~ Servlet编程_第2张图片

2.创建java和resources文件夹

Java课题笔记~ Servlet编程_第3张图片

3.修改web.xml的版本

Java课题笔记~ Servlet编程_第4张图片

 

4.导入servlet的依赖



    javax.servlet
    javax.servlet-api
    4.0.1

Java课题笔记~ Servlet编程_第5张图片

 

(2)Servlet的生命周期

init():当服务器启动,第一次访问Servlet的时候,servlet进行初始化

service():在服务器启动期间,可以不断的处理请求。

destroy():在服务器停止的时候,去销毁Servlet.

(3)Servlet的主要功能

(1)读取客户端发送到服务器端的显式数据(表单数据)

(2)读取客户端发送到服务器端的隐式数据(请求报头)

(3)服务器端发送显式数据到客户端(HTML)

(4)服务器端发送隐式数据到客户端(状态代码和响应报头)

Java课题笔记~ Servlet编程_第6张图片

 

2.编写Servlet类

1.通过Servlet生成静态网页

package com.ambow.test;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 *  作用:通过Servlet,动态生成HTML网页
 * @author foxbill
 * @date 2021/11/2 10:58
 */
@WebServlet(name = "FirstServlet")
public class FirstServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");//设置响应的字符集格式为UTF-8
        response.setContentType("text/html");//设置响应正文的MIME类型

        PrintWriter out = response.getWriter();//返回一个PrintWriter对象,Servlet使用它来输出字符串形式的正文数据
        out.println("");
        out.println("");
        out.println("动态生成的HTML文档");
        out.println("");
        out.println("");
        out.println("");
        out.println("
动态生成HTML文档
"); out.println(""); out.println(""); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }

web.xml的相关代码:


    FirstServlet
    com.ambow.test.FirstServlet


    FirstServlet
    /first

Java课题笔记~ Servlet编程_第7张图片

 

2.通过Servlet生成动态网页

package com.ambow.test;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalTime;

/**
 * @author foxbill
 * @date 2023/8/9 16:35
 */
@WebServlet(name = "TestServlet")
public class TestServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //请求处理代码(功能:写一个动态网页)
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        LocalTime now = LocalTime.now();
        int hour = now.getHour();

        out.println("");
        out.println("");
        out.println("");
        out.println("");
        out.println("");
        if (hour>0 && hour < 6){
            out.println("晚安!");
        }
        if (hour>=6 && hour <= 12){
            out.println("早安!");
        }
        if (hour>12){
            out.println("午安!");
        }
        out.println("");
        out.println("");
    }

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

web.xml的相关代码:


    TestServlet
    com.ambow.test.TestServlet


    TestServlet
    /test

Java课题笔记~ Servlet编程_第8张图片

 

3.编写web.xml配置文件

(一)配置虚拟路径

1.Servlet的多重映射

方式一:


    FirstServlet
    com.ambow.test.FirstServlet


    FirstServlet
    /first01


    FirstServlet
    /first02

方式二:


    FirstServlet
    com.ambow.test.FirstServlet


    FirstServlet
    /first01
    /first02

2.映射路径中使用通配符,格式有两种 :

*.do:优先级最低

/*

*.do

/*

/test/*

3.缺省Servlet : /

缺省servlet其实就是servlet-mapping元素中url为/的servlet,在tomcat安装目录中:conf下的web.xml中有这样一个代码:


        default
        org.apache.catalina.servlets.DefaultServlet
        
            debug
            0
        
        
            listings
            false
        
        1



    default
    /

缺省Servlet的作用就是处理servlet-mapping中url都匹配不到的请求。

在web访问任何资源都是在访问Servlet,当访问tomcat服务中的某个静态html文件和图片时,实际上是在访问这个缺省的servlet。

如果在web应用下的web.xml没有1.html对应的url-pattern,也就是没有相对应的servlet,服务器则会运行缺省servlet,由该servlet对应的org.apache.catalina.servlets.DefaultServlet类将1.html静态页面的数据读取出来显示到页面上。

把上述中的代码注释掉,重启tomcat服务器,输入http://localhost:8080 ,将发现页面中的图片将显示不出,也即是因为这个原因。

你可能感兴趣的:(Java,java,笔记,servlet,Hibernate,mybatis,开发语言,错误与异常)