SpringMVC(轻量级Web框架)

本文介绍如何创建一个SpringMVC应用,包括项目搭建、配置前端控制器、创建Controller类响应请求、配置控制器映射信息及视图解析器。通过实例演示了请求处理方法、视图返回类型以及注解配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个SpringMVC应用

  1. 创建项目,引入jar包
    pring核心包SpringMVC包日志包
    pring-beans,spring-context,spring-core,spring- expressionspring-web,spring-webmvccommon-logging
  2. 配置前端控制器
	<servlet>
	    <!-- 配置前端过滤器 -->
		<servlet-name>springmvc</servlet-name>
		<servlet-class>
              org.springframework.web.servlet.DispatcherServlet
         </servlet-class>
		<!-- 初始化时加载配置文件 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc-config.xml</param-value>
		</init-param>
		<!-- 表示容器在启动时立即加载Servlet -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
  1. 创建Controller类响应前端请求
package com.itheima.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
 * 控制器类
 */
public class FirstController implements Controller{
	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			               HttpServletResponse response)  {
         // 创建ModelAndView对象
		ModelAndView mav = new ModelAndView();
         // 向模型对象中添加数据
		mav.addObject("msg", "这是我的第一个Spring MVC程序");
         // 设置逻辑视图名
		mav.setViewName("/WEB-INF/jsp/first.jsp");
         // 返回ModelAndView对象
		return mav;
	}
}

  1. 创建SpringMVC配置文件,配置控制器映射信息
	<!-- 配置处理器Handle,映射“/firstController”请求 -->
	<bean name="/firstController" 
			class="com.itheima.controller.FirstController" />
	<!-- 处理器映射器,将处理器Handle的name作为url进行查找 -->
	<bean class=
	"org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
	<!-- 处理器适配器,配置对处理器中handleRequest()方法的调用-->
	<bean class=
	"org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
	<!-- 视图解析器 -->
	<bean class=
	"org.springframework.web.servlet.view.InternalResourceViewResolver">
	</bean>
  1. 创建视图first.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入门程序</title>
</head>
<body>
     ${msg}
</body>
</html> 

  1. 添加至Tomcat并访问http://localhost:8080/“项目名称”/firstController
    流程
    用户,DispatcherServlet(前端控制器),HandlerMapping(处理器映射器),HandlerAdapter(处理器适配器),Handler(处理器),ViewResolver(视图解析器),View(视图(如jsp)),用户

核心类和注解

DispatcherServlet属性描述
<load-on-startup>为1时,应用程序启动时立即加载Servlet;不存在时,第一个Servlet请求时加载该Servlet
<init-param>它的子元素<param-name>、<param-value>配置SpringMVC配置文件的路径,应用程序启动时加载配置路径中的配置文件;无,默认到WEB-INF目录
servletName(servlet-mapping的子标签)部署在web.xml中的DispatcherServlet的名称,应用会在WEB-INF下寻找springmvc-servlet.xml
  • servlet-mapping用于映射一个Servlet的对外访问路径,称为虚拟路径。创建好的Servlet只有映射成虚拟路径,客户端才能对其进行访问。
  • 如果某个某个Servlet映射路径为正斜杠,则为当前web应用的默认Servlet,处理其他Servlet都不能处理的请求。
@RequestMapping注解属性描述
name为映射地址指定别名
value映射一个请求和一种方法,默认属性为value,可以省略属性名
method请求方式,亦可以使用组合注解来省略method属性:@GetMapping,@PostMapping,@PutMapping,@DeleteMapping,@PatchMapping
params指定Request必须包含某些参数
headers指定Request必须包含某些指定的header的值
consumes指定处理请求的提交内容类型(Content-Type)
produces指定返回内容类型,必须是request请求头(Accept)所包含类型
  • 标注在方法上,该方法成为一个请求处理方法
  • 标注在类上,该类上的所有方法映射为相对于类级别的请求,类中所有请求映射到value人数性质所指定的路径下。
请求处理方法描述
参数类型HttpServletRequestHttpServletResponseHttpSessionModel, WebRequest,NativeWebRequest…
返回类型ModelAndView(可以添加Model数据并指定视图),Model, Map, View, String(可以跳转视图,不能携带数据), void(只返回数据), HttpEntity<?>,ResponseEntity<?>, Callable<?>,DeferredResult<?>

ModelAndView未能实现数据和视图的解耦,开发常使用String,通过Model参数将数据带入视图页面。

@Controller
@RequestMapping(value="/hello")
public class FirstController{
	@RequestMapping(value="/firstController")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		// 向模型对象中添加数据
		model.addAttribute("msg", "这是我的第一个Spring MVC程序");
		// 返回视图页面
		return "first";
	}
}

String返回类型实现重定向和请求转发:

  • 重定向:return “redirect:queryUser”;
  • 请求转发:return “forward:editUser”;

视图解析器

简化view的路径,访问时自动添加前缀和后缀

	<!-- 定义视图解析器 -->
	<bean id="viewResolver" class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
	     <!-- 设置前缀 -->
	     <property name="prefix" value="/WEB-INF/jsp/" />
	     <!-- 设置后缀 -->
	     <property name="suffix" value=".jsp" />
	</bean>

一个基注解的SpringMVC应用

  1. 搭建项目,引入jar
  2. web.xml配置前端控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
              org.springframework.web.servlet.DispatcherServlet
         </servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <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>
  1. 在springmvc-config.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"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
	   http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
	   http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	<!-- 指定需要扫描的包 -->
	<context:component-scan base-package="com.itheima.controller" />
	<!-- 定义视图解析器 -->
	<bean id="viewResolver" class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
	     <!-- 设置前缀 -->
	     <property name="prefix" value="/WEB-INF/jsp/" />
	     <!-- 设置后缀 -->
	     <property name="suffix" value=".jsp" />
	</bean>
</beans>  

  1. 创建控制类
package com.itheima.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 控制器类
 */
@Controller
@RequestMapping(value="/hello")
public class FirstController{
	@RequestMapping(value="/firstController")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		// 向模型对象中添加数据
		model.addAttribute("msg", "这是我的第一个Spring MVC程序");
		// 返回视图页面
		return "first";
	}
}

  1. 响应视图
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
         "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入门程序</title>
</head>
<body>
     ${msg}
</body>
</html>
  1. 启动项目,访问http://localhost:8080/“项目名称”/hello/firstController
1.0.5 从web项目迁移成maven项目 1.0.6 增加菜单框架ext实现,类路径调整 1.0.7 增加http工具类,demo例子 1.0.8 socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 zookeeper工具类优化 增加工具类 1.0.16 页面html标志修改 httpclient中文支持 工具类增强(zip,reflect,thread) 1.0.17 ftp服务端和客户端工具类,配置文件maven和web项目路径统一 1.1.0 soapui工具类(web版本) properties等工具类 1.1.1 工具类数据校验 jsp自定义标签 Spring自定义注解 默认requestMapping 1.1.2 代码生成器 1.1.3 首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级jdk1.8 jetty9.2.4 web升级jdk1.7 tomcat7 1.1.7(maven only) 包名修改 从此不再支持web版本,只支持maven版本 1.1.8 jquery 图片预览插件 图片滚动显示插件 1.1.9 jquery实现鼠标在按钮上显示窗口,离开窗口和按钮时消失 1.1.10 rabbitMQ集成 视频截图 图片缩略图旋转 集成Mybatis 使用数据库连接池druid dubbo使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值