【软件开发架构平台】CH4 Spring MVC入门

Spring MVC简介

Spring MVC是Spring体系中的轻量级Web MVC (表示层)框架

Spring MVC核心是Controller控制器,用于处理响应和请求

Spring MVC基于Spring IoC容器运行,所有对象被IoC容器管理

体系架构

  • 请求首先道道前端控制器,委托给具体的控制器处理请求
  • 前端控制器通过查询处理器映射,找到URL对应的控制器
  • 控制器处理请求,包括数据处理,调用业务逻辑等
  • 控制器将模型数据(打包)和(逻辑)视图名返回给前端控制器
  • 视图解析器讲逻辑视图名匹配成具体的视图实现
  • 视图进行模型数据和视图实现的渲染
  • 交付模型数据,给出Web响应
Spring MVC基本使用

配置Maven
在pom.xml配置

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>2.1.4</version>
</dependency>

配置web.xml
打注解@Servlet或配置DispatcherServlet

<!--配置DispatcherServlet-->
<servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      
      <!--配置applicationContext.xml-->
      <init-param>
      		<param-name>contextConfigLocation</param-name>
      		<param-value>classpath:applicationContext.xml</param-value>
      </init-param>
      
       <!--自动创建springIoc容器-->
      <load-on-startup>0</load-on-startup>      
</servlet>

<servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>/</version> <!--根目录下所有请求都会被转发处理-->
</servlet-mapping>

配置applicationContext.xml
以下为配置web.xml后的配置

<beans xmlns="http://www.springframework.org/schemas//beans">
...
</beans>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e8cB9AJ8-1651079485702)(C:\Users\西铭\AppData\Roaming\Typora\typora-user-images\image-20220427235727515.png)]

编写Controller

  • @Controller 注解该类为一个Servlet控制器
  • @GetMapping 注解URL映射
  • @ResponseBody 注解直接以字符串内容进行响应

URL映射

  • Spring MVC通过URL映射将Web请求的URL和控制器中的方法进行映射
  • URL映射基于方法,比传统的web.xml中Serve论坛映粒度更小,使用更灵活
  • 常用注解
    • @RequestMapping:通用映射,不区分请求,常用于Controller类,进行全局设置
    • @GetMapping:Get请求映射,作用于具体方法
    • @PostMapping:Post请求映射,作用于具体方法

Spring MVC提供多种方式接收请求参数,包括:

(1) 使用属性在方法参数直接接收参数

  • 基于规则,所以要确保前后端属性名称一致,如果属性名称不一致,使用@RequestParam注解进行映射

(2) 使用JavaBean接收封装后的大量数据——更为常用

Spring MVC响应处理

Spring MVC对传统Servlet的相应处理进行了大量的简化,同时提供ModelAndView对象将响应的内容(Model)和视图进行了解耦合

常用于响应处理的方式有:

  • @ResponseBody:不进行页面跳转和视图渲染,直接输出响应文本,包括标准JSON格式等
  • ModelAndView:通过JSP、Themeleaf等模板继续宁视图渲染
    • 产生页面跳转的方法返回ModelAndView类型
    • ModelAndView中的对象作用域默认为request
    • ModelAndView的页面跳转方式默认为forward
@Controller
@RequestMapping("/hello")//配置URL映射
public class DemoCnotroller{
	
	@Autowired
    private AccountService accountService;
    		
	
	@SessionAttributes(value = "account",types = {Account.class})//获取account
	@GetMapping("/loginForm")//配置URL映射
	public String Hello(@SessionAttribute("account") Account account,
						@RequestParam(value = "firstName",required = false) String firstName,)
	{
		//@RequestParam为从页面上提交的值,如果前后端属性名要一致,则不用打@RequestParam
		Account account1=new Account();
        account1.setUsername(account.username);
		return "Hello,"+account.username+",your firstname is:"+firstName;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值