Servlet详解,持续更新

Servlet详解

Servlet简介

动态资源和静态资源

静态资源,无需在程序运行时通过代码产生的资源,在程序运行之前就写好的资源,例如html、css、js、img的文件

动态资源,需要在程序运行时通过代码生成的资源,在程序运行之前无法确定的数据,运行时动态产生,

在动态资源,请求报文给服务端传送不同的参数,后端的Java代码根据不同的的参数响应给前端不同数据,数据通过tomcat转换成响应报文发送给前端

举个栗子,买蛋糕,需要定做的就是动态资源,直接购买现成的就是静态资源

Servlet运行流程

在这里插入图片描述

Servlet开发流程

​ 需求:这里我们的需求是如果用户在用户名那一栏输入张三,就返回No,输入其他就返回Yes

1.首先创建一个JavaWeb工程,前面的文章讲过如何创建JavaWeb工程,不会的友友们可以看前面的那篇

2.在Web目录下建一个html文件,写出简单的前端代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="" method="get">
        用户名:<input type="text" name="username">
        <input type="submit" value="校验">
    </form>>

</body>
</html>

3.在src里写一段Java代码,来满足需求,下面是后端代码:

package com.atguigu.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
//这里是要实现Servlet的接口,但是Servlet接口里面的方法太多了,这里通过继承HttpServlet来重写service方法
public class UserServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");//获取username的内容
        String info="Yes";
        if("zhangsan".equals(username)) {
            info = "No";
        }
        info="Yes";
        PrintWriter writer = resp.getWriter();//输入流
        writer.write(info);//将返回的info写入
    }
}

这些做完就需要进行配置文件

xml文件配置方式

WEB-INF-web.xml文件中,在的标签下写

<!--设置xml文档
<servlet>下的<servlet-name>里面包含的是包含service方法的类名(tomcat会自动为UserServlet类创建一个对象调用service方法)
<servlet>下的<servlet-class>里面包含的是UserServlet类的文件路径

<servlet-mapping>下的<servlet-name>包含的也是UserServlet的类名
<servlet-mappig>下的<url-pattern>包含的是url里面要输入的东西,这里可以自己随便起名,(我这里见闻之意),但是要有一个"/"
-->
<servlet>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>com.atguigu.servlet.UserServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/userservlet</url-pattern>
</servlet-mapping>

这里我说一下这个配置文件的逻辑顺序,标签下的UserServlet中Userservlet是一个别名,下的UserServlet中的UserServlet也是一个别名,但这两个别名要一致,这个是通过标签下的 /userservlet的内容找到下的UserServlet然后根据这个别名再找到,标签下的UserServlet,再根据这个找到com.atguigu.servlet.UserServlet,tomcat再利用反射创建对象完成下面的操作。

这里 /userservlet里面写的是映射路径,可以写多个

servlet-maping标签下url-pattern中的命名格式

/xxx

这是精确匹配的格式,xxx是什么再网址上面搜即可

/

这是匹配全部,但是不包含jsp文件

/*

这是匹配全部,包含jsp文件

/a/*

这是匹配前缀,后缀随便,前面必须以/a开头,后面可以随便

*.action

这是匹配后缀,前缀随便,前面随便,后面必须以.action结尾

注解方式配置

直接在重写service()方法的类前面加上 @WebServlet(“/(映射路径)”),和上面的映射路径一样,这里可以以数组的形式写多个,但是一般在开发的时候,只写一个。

缀随便,前面随便,后面必须以.action结尾

注解方式配置

直接在重写service()方法的类前面加上 @WebServlet(“/(映射路径)”),和上面的映射路径一样,这里可以以数组的形式写多个,但是一般在开发的时候,只写一个。

Servlet生命周期

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值