发布属于自己的第一个java web项目(2)--Servlet的相关使用

本文介绍了JavaWeb项目中MVC模型的概念,详细讲解了Servlet的三种创建方式及其核心方法。同时,展示了通过XML配置和注解配置Servlet的步骤,帮助读者理解Servlet在处理HTTP请求中的作用。文中还提到了目录结构和项目部署的相关知识,为初学者提供了一步步发布项目的指导。
摘要由CSDN通过智能技术生成

如果有配置不懂的请看上一篇

MVC模型的介绍

M 即model模型是指模型表示业务规则。
V 即View视图是指用户看到并与之交互的界面。
C 即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求。

简单来说就是
M 就是我们创建的 用户类
V 是我们说看到的前端页面
C 是我们后端写的控制代码

注意:jsp 本质上也是一个Servlet 不过jsp侧重于显示页面,而Servlet侧重于处理数据

各个目录结构

在这里插入图片描述
这是我们看到的文件目录,而在编译之后,
在这里插入图片描述
如图多了两个文件夹,这个是服务器自动放到了输出目录,里面存放了编译之后的java文件,以及一些静态资源,artifacts文件夹下,一个文件夹就是一个虚拟目录,虚拟目录名称就是我们文件夹的名字,这个是我们可以自己修改的,方法见上一篇文章,修改之后再次编译文件夹的名称也会随之修改,通过ip加端口加虚拟目录即可访问我们的web项目

Servlet的使用

一、认识Servlet

api中的介绍

在这里插入图片描述

创建Servlet的方式有三种

1. 直接继承Servlet接口

如图,继承了五个抽象方法:

import javax.servlet.*;
import java.io.IOException;

public class Demo01 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

init()方法用来初始化Servlet,一般在项目启动之后执行一次,此后直到销毁都不会再次执行
getServletConfig() 是容器向servlet传递参数的载体,返回一些初始化信息
service() 五个方法里最重要的方法 每执行一次Servlet 就会执行一次该方法。方法用来执行Serlvet具体的业务操作,利用响应对象响应客户端请求
getServletInfo() 得到Servlet的一些想管信息
destroy() Servlet销毁时执行该方法

直接继承抽象方法灵活性最高,但是相反的代码冗余,比较复杂,所以提供了第二种方法

2. 继承 GenericServlet
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

public class Demo02 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }
}

只需要实现service这个核心的方法即可,相比直接继承接口简洁了很多,但是注意,通过继承GenericServlet来实现的Servlet 与Http请求无关

3.通过继承HttpServlet

需要我们手动去从写doGet 和 doPost方法
在这里插入图片描述
初始为这样,但是因为我们不管是Get请求和Post请求,要执行的操作是一样的,所以我们这些来写:

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


public class Demo03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

如果是Get请求则直接执行,如果是Post请求则调用Get请求来完成

二、Servlet的使用

1. 配置文件
<?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">
    <servlet>
        <servlet-name>Servlet03</servlet-name>
        <servlet-class>com.biu.Servlte.Demo03</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Servlet03</servlet-name>
        <url-pattern>/URLServlet01</url-pattern>
    </servlet-mapping>
</web-app>

在xml文件中配置< Servle> 和 < servlet-mapping>
< servlet> 拿到该类的全限类名,并通过< servlet-name >来取一个名字,相当于id名
在< servlet-mapping> 通过拿到的Servlet配置名来定义访问路径
< url-pattern>就是配置浏览器通过什么路径能访问到这个Servlet

如图
在这里插入图片描述
在我通过配置的路径访问到网页时
在这里插入图片描述
控制台会打印输出语句
在这里插入图片描述
表示我们配置成功

这种方法在Servlet较少的时候适用,当我们Servlet多了之后,一个Servlet就多一个这样配置,可见文件的可读性不高,并且容易出现疏忽导致错误,所以,还有第二种方法,注解来配置Servlet

2.注解配置Servlet

在这里插入图片描述
如上图,只需要在Servlet最上面加上 @WebServlet("/浏览器访问路径名字") 即可完成配置
注意 引号里的 / 不能少,并且后面不能有分号
重启服务器并重新访问
在这里插入图片描述
如图,也是成功访问到了
注意 既然我们通过注解配置了Servlet 在原来xml文件里的配置应当删除免得有不必要的错误

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值