Spring Mvc中配置Tomcat

阅读本篇文章的前提需要使用过tomcat做过jsp项目

web.xml

​ 在Tomcat项目中,web.xml 文件是一个部署描述符,用于配置 Web 应用程序的行为。根节点 <web-app> 中的 version 属性指定了使用的 Servlet 规范的版本。

​ 例如,version="3.1" 表示使用 Servlet 3.1 规范。不同的 Servlet 版本支持不同的特性和功能。在配置 web.xml 文件时,确保选择与你的应用程序需要的 Servlet 规范版本相匹配的 version 属性值。

请看下面有这段web.xml,可以知道它的版本是4.0

<?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">
    <display-name>Add additional code below</display-name>
</web-app>

在开发中我们需要根据使用的Tomcat指定标签中的版本,否则代码可能会出现不可预料的问题。

那么如何知道Tomcat要指定哪个版本的servlet?

我们可以进入Tomcat的安装目录下的lib文件夹

在这里插入图片描述

用压缩包的形式打开servlet-api.jar里面的META-INF目录下的 MANIFEST.MF 下记录了详细信息

在这里插入图片描述

可以看到我当前使用的tomcat使用的规范是4.0的,所以需要将改version和上一行的_4_0.xsd改成对应的版本

Tomcat协议规范

不同的 Apache Tomcat版本对应不同版本的协议规范详情如下:

在这里插入图片描述

你也可以通过官网进行查看:协议规范和Apache Tomcat版本的映射关系

表头中各个字段的意思如下:

Servlet 规范

Servlet 规范是 Java EE(Java Enterprise Edition)平台的一部分,它定义了一种用于开发 Web 应用程序的 Java 类。Servlet 是在 Web 服务器上运行的 Java 程序,用于处理客户端发送的请求并生成响应。

Servlet 规范主要包括以下几个方面的内容:

  1. Servlet 接口:Servlet 规范定义了 javax.servlet.Servlet 接口,所有 Servlet 类都必须实现这个接口。Servlet 接口包括了一些生命周期方法,如 init()service()destroy(),用于初始化、处理请求和销毁 Servlet 实例。
  2. Servlet 生命周期:Servlet 规范明确了 Servlet 的生命周期,包括初始化阶段、请求处理阶段和销毁阶段。开发者可以在 Servlet 的生命周期方法中编写初始化代码和清理资源的代码。
  3. 请求和响应对象:Servlet 规范定义了 javax.servlet.ServletRequestjavax.servlet.ServletResponse 接口,用于表示客户端发送的请求和服务器发送的响应。这些接口提供了一系列方法,用于读取请求参数、设置响应头等操作。
  4. Servlet 容器:Servlet 规范要求 Web 服务器提供 Servlet 容器,用于管理 Servlet 的生命周期,并且处理客户端请求和响应。Servlet 容器负责加载、初始化和调用 Servlet 实例,以及维护 Servlet 的状态。
  5. Servlet 配置:Servlet 规范定义了 web.xml 配置文件的格式,用于配置 Servlet、Servlet 映射、Servlet 初始化参数等信息。这些配置信息可以在部署 Web 应用程序时进行设置。

通常需要将web.xml中提到的servlet-api.jar添加到我们代码的lib中,如果用Maven我们也要导入对应版本的依赖

还有一点就是Tomcat10版本中servlet的命名空间发生了变化从javax变成了jakarta,感兴趣的话可以自行搜索

JSP 规范

JSP(JavaServer Pages)标签是用于在 JSP 页面中执行特定功能的一种机制。以下是常见的 JSP 标签类型:

  1. 指令标签(Directive Tags)
    • <%@ page %>:用于设置页面的属性,如导入的包、错误页面等。
    • <%@ include %>:用于将一个页面包含到另一个页面中。
  2. 动作标签(Action Tags)
    • <jsp:include>:将另一个页面包含到当前页面中。
    • <jsp:forward>:将请求转发到另一个页面。
    • <jsp:useBean>:用于实例化 JavaBean 对象。
    • <jsp:setProperty>:用于设置 JavaBean 对象的属性值。
    • <jsp:getProperty>:用于获取 JavaBean 对象的属性值。
    • <jsp:plugin>:生成 applet 和对象。
    • <jsp:param>:为包含的页面传递参数。
    • <jsp:element>:创建 XML 元素。
    • <jsp:attribute>:设置 XML 元素的属性。
    • <jsp:body>:定义自定义标签的主体内容。
  3. 脚本标签(Scripting Tags)
    • <% %>:用于插入 Java 代码片段。
    • <%= %>:用于输出表达式的结果。
  4. 表达式标签(Expression Tags)
    • <%= %>:用于输出表达式的结果,与脚本标签中的表达式使用方式相同,但更简洁。
  5. 注释标签(Comment Tags)
    • <%-- --%>:用于添加注释,不会被输出到客户端。

这些标签提供了丰富的功能,使得在 JSP 页面中可以方便地嵌入 Java 代码、调用 JavaBean、控制页面流程等。通过合理使用这些标签,可以提高 JSP 页面的可维护性和灵活性。

EL Spec规范

EL(Expression Language)规范是 Java EE(Java Enterprise Edition)平台的一部分,它定义了一种用于在 JSP(JavaServer Pages)和 JSF(JavaServer Faces)等技术中访问和操作数据的表达式语言。

EL 语法的主要部分:

  • 语法:EL 提供了一种简洁而强大的语法,用于访问 JavaBean 的属性、数组和集合的元素、Map 的条目等。它还支持算术运算、关系运算、逻辑运算和三元运算符等常见的表达式语法。下面介绍一些常用语法

    • 成员访问:使用 ${} 符号来访问变量或调用方法,例如:${user.name}

    • 空值检查:EL 2.2 引入了空值安全操作符 ?.,用于在访问属性或方法时避免空指针异常。

  • 隐式对象:EL 提供了一些隐式对象,可以直接在表达式中使用,如 ${request}, ${session}, ${param} 等,代表了在 JSP 页面或 JSF 组件中可用的一些常见对象。

  • 作用域:EL 规范定义了四种作用域,包括页面作用域(page scope)、请求作用域(request scope)、会话作用域(session scope)和应用程序作用域(application scope)。开发者可以使用 EL 表达式来访问和操作这些作用域中的数据。

  • 函数:EL 规范支持自定义函数,开发者可以编写自己的 EL 函数,并在 JSP 页面或 JSF 组件中使用这些函数。这使得开发者可以在 EL 表达式中执行自定义的逻辑操作。

WebSocket Spec、Authentication (JASPIC) Spec:认证(JASPIC)现阶段不必了解这里就不再赘述

搭建Spring MVC工程

这里我们在idea 2022中采用Maven原型创建,不同版本idea可能有些区别

创建目录

点击右上角文件 -> 新建 -> 项目

点击Maven Archetype选择:maven-archetype-webapp

在这里插入图片描述

起好项目名称后点击创建,等maven构建完成后会帮你生成web目录,此时你需要手动创建目录把工程目录改成以下结构(这可以看成是一个比较标准的目录结构,实际还应该有个test目录):

在这里插入图片描述

更改web.xml

下面是大多数入门教程的基本结构

<?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">
    <display-name>Archetype Created Web Application</display-name>

    <servlet>
        <servlet-name>SpringMvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!-- springmvc-config.xml是resource目录中spring mvc的配置文件 -->
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
配置tomcat

tomcat所用版本9.0 点击添加配置 -> 点击左上角+ -> 下拉选择Tomcat服务器本地确定

在这里插入图片描述

然后来到这个界面,按下面配置完成后点击应用

在这里插入图片描述

如果上面一步没有点击修复我们需要切换到部署界面

在这里插入图片描述

改完后不要忘记点击应用

Spring-mvc.xml

基本文件结构如下:

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <mvc:annotation-driven/>
    <context:component-scan base-package="com.dx.controller"/>
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>

运行测试

在java目录下创建一个包,加入以下代码

package com.dx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping("/api")
public class TestController {
    @RequestMapping("/hello")
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) {
        ModelAndView mav = new ModelAndView();
        mav.addObject("msg", "hello world");
        mav.setViewName("/index.jsp");
        return mav;
    }
}

在webapp目录下新建一个index.jsp加入以下代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>项目成功起飞</h1>
    ${msg}
</body>
</html>

pom.xml中应该加入以下必须的jar包(注意版本号)

在这里插入图片描述

运行结果

在这里插入图片描述

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值