Java的Web应用框架Spring MVC开发的详细步骤

news/2024/12/18 11:21:43/文章来源:https://www.cnblogs.com/java-note/p/18614400

Spring MVC是一个基于Java的Web应用框架,用于构建灵活且易于维护的Web应用程序。

一、环境搭建

  1. 创建Maven项目(以Maven为例)
    • 打开你喜欢的IDE(如IntelliJ IDEA或Eclipse),创建一个新的Maven项目。
    • pom.xml文件中添加Spring MVC相关依赖。主要包括spring-webmvcjavax.servlet-servlet-api等。例如:
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.23(版本号可根据实际情况更新)</version>
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version>
</dependency>
  1. 配置web.xml(传统方式)或使用Java配置(Servlet 3.0+)
    • 传统web.xml方式
      • WEB-INF目录下创建web.xml文件。
      • 配置DispatcherServlet,这是Spring MVC的核心组件,它负责接收所有的HTTP请求并将它们分发给相应的控制器。例如:
<web-app><servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-mvc.xml(配置文件路径)</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
  • Java配置方式(Servlet 3.0+)
    • 创建一个类,例如WebInitializer,它实现WebApplicationInitializer接口。
    • 在这个类中,使用AnnotationConfigWebApplicationContext来加载Spring配置类,并将DispatcherServlet注册到Servlet容器中。例如:
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return null;}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class<?>[]{AppConfig.class(你的Spring配置类)};}@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
}
  1. 创建Spring配置文件(如果使用传统方式)
    • WEB-INF目录下创建spring-mvc.xml(名称可自定义)。
    • 配置组件扫描,让Spring能够找到你的控制器类。例如:
<?xml version="1.0" encoding="UTF - 8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-in-c1"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.example.controller(你的控制器包路径)"/>
</beans>

二、创建控制器(Controller)

  1. 定义控制器类
    • 创建一个Java类,使用@Controller注解标记这个类为Spring MVC控制器。例如:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {@RequestMapping("/hello")public String sayHello() {return "hello(视图名称)";}
}
  • 在这个例子中,@RequestMapping注解用于将一个URL路径(/hello)映射到sayHello方法。当用户访问/hello这个URL时,sayHello方法就会被调用。
  1. 处理请求参数
    • 如果你的方法需要接收请求参数,可以使用@RequestParam注解。例如:
@RequestMapping("/add")
public String addNumbers(@RequestParam("num1") int num1, @RequestParam("num2") int num2) {int result = num1 + num2;// 可以将结果存储在模型中,传递给视图return "result(视图名称)";
}
  • 这里@RequestParam注解指定了参数的名称(num1num2),并且会自动将请求中的参数值转换为指定的类型(这里是int)。
  1. 使用路径变量(Path Variable)
    • 除了@RequestParam,还可以使用路径变量来获取URL中的参数。例如:
@RequestMapping("/user/{id}")
public String getUserById(@PathVariable("id") int id) {// 根据id查询用户信息,然后传递给视图return "user(视图名称)";
}
  • 在这个例子中,{id}是一个路径变量,@PathVariable注解用于将URL中的变量值绑定到方法参数id上。

三、创建视图(View)

  1. 选择视图技术
    • Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等。
    • 以JSP为例,需要在web-app目录下创建WEB-INF目录(如果不存在),并在其中创建views目录来存放JSP文件。
  2. 创建JSP视图(以JSP为例)
    • views目录下创建hello.jsp文件,例如:
<%@ page contentType="text/html;charset=UTF - 8" language="java" %>
<html>
<head><title>Hello Page</title>
</head>
<body><h1>Hello, Spring MVC!</h1>
</body>
</html>
  • 当控制器方法返回"hello"这个视图名称时,Spring MVC会在视图解析器配置的路径下(这里是/WEB-INF/views)找到hello.jsp文件并进行渲染。
  1. 配置视图解析器(如果需要)
    • spring-mvc.xml(传统方式)或配置类(Java配置方式)中配置视图解析器。以InternalResourceViewResolver(用于JSP)为例:
    • 传统方式(xml)
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/>
</bean>
  • Java配置方式
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
public class AppConfig {@Beanpublic InternalResourceViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".jsp");return resolver;}
}
  • 视图解析器会根据前缀和后缀来解析视图名称,找到对应的视图文件。

四、运行和测试

  1. 部署应用程序
    • 将项目部署到一个Web服务器(如Tomcat、Jetty等)。
    • 在IDE中,可以通过配置服务器并将项目添加到服务器来进行部署。
  2. 测试应用程序
    • 启动Web服务器后,在浏览器中输入相应的URL(如http://localhost:8080/your-application-context-root/hello)来访问应用程序。
    • 如果一切配置正确,应该能够看到相应的视图内容被渲染出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教会你电脑端如何长截屏~

如果在电脑端想拿到这样的长截图,教你一个方法,不需要下载软件 首先需要先下载一个小插件 需要下载滚动截屏所需的插件 然后解压 zip 包 下载好插件后,对 .zip 包进行解压,解压后文件夹里面有个 .crx 后缀的离线安装包,大致如下图所示:打开扩展程序管理菜单 接下来,打开…

实时同步,精准执行!高效电商团队必备协作术

随着电商行业的迅猛发展,运营团队日常工作节奏变得愈发紧张。从上新规划、活动策划到商品数据分析、客服反馈跟进,各个环节的任务交接与流程协作逐渐成为团队效率的瓶颈。尤其是在多人并行的项目中,沟通不畅、文档版本混乱、任务分配模糊等问题层出不穷,稍有不慎,就可能导…

【运维自动化-作业平台】如何使用全局变量之命名空间类型?

命名空间类型的全局变量主要适用场景是同一批主机在多个步骤间需要传递独立的变量值,比如内网ip、hostame,每台主机都是不同的变量值。而字符串变量是全局针对所有主机所有步骤都是一样的变量值。实操演示 例:定义一个local_ip的命名空间变量,目标两台机器,然后添加两个执…

智改数转,物联网创业者有哪些商业机会?

《智改数转,物联网创业者有哪些商业机会》 在当前的数字化转型浪潮中,“智改数转”(智能化改造和数字化转型)已成为企业发展的新趋势。物联网(IoT)作为这一转型的核心技术之一,为创业者提供了丰富的商业机会。以下是物联网创业者可以把握的几个关键商业机会: 1. 设备制…

中小团队必备工具:如何用协同管理软件提高效率

一、中小团队面临的工作效率挑战 中小团队通常面临以下几个主要的工作效率问题: 1.1 资源有限,工作繁重 与大型企业相比,中小团队往往资源有限,人员紧张,团队成员往往需要身兼数职,处理多种任务。这种情况下,如何有效分配工作、确保每项任务顺利推进,就成为了管理的关键…

【原创】PREEMPT-RT中断线程化原理与中断线程优先级设置

本文介绍实时linux方案PREEMPT-RT提升系统实时性的机制之一--中断线程化,以及中断线程优先级如何配置,希望能对你有所帮助。PREEMPT-RT中断线程化与中断线程优先级设置 目录PREEMPT-RT中断线程化与中断线程优先级设置一、什么是中断线程化1. 普通Linux中断处理2. 实时性的不足…

NPM,可视化的Nginx管理工具

NPM,可视化的Nginx管理工具 前言 NPM,全称:Nginx Proxy Manager,是一款可视化的Nginx的管理工具。众所周知,Nginx的配置文件对于新手尤其是我这样的小白,还是很难上手配置的。虽然说现在可以使用AI,大大降低了理解,配置难度,但是可视化的配置仍然具有很大的优势,极大的…

汽车软件DevOps解决方案

经纬恒润汽车软件DevOps解决方案是专为现代汽车行业设计的一套集成化需求、开发、测试、部署、OTA与监控,旨在加速软件开发流程,提高软件质量和安全性,同时确保整个生命周期的高效性和灵活性。 经纬恒润汽车软件DevOps解决方案是专为现代汽车行业设计的一套集成化需求…

idea构建Build Project项目时一直卡在解析阶段解决办法

可能是内存不足,修改以下三个地方 1、help->Edit Custom VM Options-Xmx4096m 2、file->settings->Build,Execution,Deployment->Build Tools->Maven->Importing的VM options for importer写入参数-Xmx4096m3、file->settings->Build,Execution,Deplo…

PbootCMS 网站打开提示“No input file specified.”,如何解决?

当你在访问 PbootCMS 网站时,如果遇到“No input file specified.”的错误提示,这通常是由于服务器配置或文件缺失引起的问题。以下是一些常见的解决方法和步骤:检查根目录下的 user.ini 文件:这个问题的一个常见原因是根目录中存在 user.ini 文件。这个文件通常是服务器为…

在PbootCMS中如何优化图片的SEO属性?

在PbootCMS中优化图片的SEO属性对于提高网站的搜索引擎排名和用户体验至关重要。以下是一些具体的优化方法,帮助你更好地管理图片的alt和title属性:手动编辑图片描述:在PbootCMS后台,上传图片后,可以通过编辑器手动添加或修改图片的alt和title属性。 例如,当你插入图片时…

PbootCMS模板上传栏目缩略图时,图片宽度自动变成1000像素,如何解决?

在使用PbootCMS模板时,如果你发现上传的栏目缩略图在保存后自动变成了1000像素的宽度,这通常是由于系统配置中的缩略图最大宽度设置所致。你可以通过修改配置文件来解决这个问题。以下是详细的步骤和实现方法:理解问题原因:PbootCMS在上传图片时会根据配置文件中的设置自动…