SpringMVC:一个简单的demo通过继承HttpServlet实现对url解析实现页面跳转

本文通过一个简单的SpringMVC demo,详细介绍了如何使用HttpServlet实现URL解析并进行页面跳转。内容涵盖Java Web项目搭建、HttpServlet的继承与重写、web.xml配置、jsp页面创建以及Tomcat服务器部署,帮助读者理解Servlet在SpringMVC中的作用。

1.前言

Servlet(Server Applet)是Java Servlet的简称,Servlet是SpringMVC框架的核心,Servlet在Java Web定义了一组接口规范,为了扩展Java作为Web服务的功能,统一接口。Servlet是运行在服务器短的Java程序,可以对客户端发出的HTTP请求,调用其中的方法处理请求并将请求结果返回给服务器,最终发送到客户端。而我们今天使用的HttpServlet是Servlet的实现类,准确来说是Servlet子类GenericServlet实现了Servlet接口中的方法(init();destory();service()等方法),而HttpServlet继承了GenericServlet,不知道你有没有混乱,那就看下面图解(图1所示)吧!下面我们代码实现一个HttpServlet的小demo来深入了解一下HttpServlet。

在这里插入图片描述

图1

2.HttpServlet类实现过程

项目搭建环境

开发工具:IDEA 2020.3.1
JDK版本:1.8.0
项目构建工具maven版本:3.6.3

2.1新建Java Web项目

你可以直接新建时选择Java Entreprise的java企业项目或者新建一个maven项目后再添加Web框架,此处我使用是新建maven项目再添加Web框架,构建流程如下图所示:图2是创建web项目;图3是为maven项目添加web框架
在这里插入图片描述

图2

新建完maven项目后,右击项目 ->Add Framworks Support
在这里插入图片描述

图3

2.2 pom.xml导入需要的依赖,并在项目的war包也添加全部依赖

1)项目的war包没有这些依赖,运行项目后会报错,需要手动添加依赖(如图4所示),需要依赖如下:

<dependency>
    <groupId>org.example</groupId>
    <artifactId>spring-mvc</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
</dependency>

2)项目war包添加依赖,Ctrl+Shift+Alt+S快捷键打开项目结构,执行以下操作:
在这里插入图片描述

图4

2.3 在包下新建class类继承HttpServlet类,重写doGet和doPost方法

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前端参数
        String method = req.getParameter("method");
        if ("add".equals(method)) {
            //封装数据
            req.getSession().setAttribute("msg", "调用了add方法");
        }
        if ("delete".equals(method)) {
            req.getSession().setAttribute("msg", "调用了delete方法");
        }
        //视图转发或重定向
        req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req, resp);
    }

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

2.4 在web目录下的web.xml文件配置servlet映射

找到web/WEB-INF/web.xml,添加刚才新建HelloServlet类的servlet映射

<?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>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.hebeu.servlet.HelloServlet</servlet-class>
    </servlet>
<!--   通过映射/hello访问真实servlet -->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

2.5 在web/WEB-INF目录下新建jsp目录,new一个hello.jsp响应HelloServlet数据页面

web/WEB-INF/jsp下新建hello.jsp页面,具体代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--解析HelloServlet中msg数据--%>
${msg}
</body>
</html>

注意:新建jsp页面要和转发页面名称路径一致(图5)

在这里插入图片描述

图5

2.6 将web项目部署到Tomcat服务器上

图6是添加配置localTomcat服务器;图7是部署web项目war包到服务器;图8是部署后程序路径配置
在这里插入图片描述

图6

在这里插入图片描述

图7

在这里插入图片描述

图8

2.7 浏览器访问

在浏览器地址栏输入http://localhost:8080/hello?method=add或http://localhost:8080/hello?method=delete,页面会出现以下内容那你就成功了
在这里插入图片描述
在这里插入图片描述

2.8 注意点

Web项目很容易出现问题,即使你一步步跟着教程敲,我是深有体会啊,404和乱码是经常会遇到的,需要注意以下几点:
1)导入某个类时可能有几个名称一样的,别导错了
2)编写代码时要认真注意,可能因为多打了个字母括号出错
3)遇到一直解决不了问题时,不要着急,从头把代码过一遍,自己复述一遍过程
4)404总的来说就是找不到资源文件,原因很多:地址路径不对;代码里的文件路径有误等等
5)乱码问题就是文件的编码和解码格式不一样,有的是UTF-8;有的是GBK

3.总结

web项目很容易出现奇奇怪怪的问题,自己解决问题的过程也是一种学习,可以把解决方法以博客记录下来,方便日后查找

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值