【软件开发架构平台】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.springframeworkgroupId>
      <artifactId>spring-webmvcartifactId>
      <version>2.1.4version>
dependency>

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


<servlet>
      <servlet-name>springmvcservlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
      
      
      <init-param>
      		<param-name>contextConfigLocationparam-name>
      		<param-value>classpath:applicationContext.xmlparam-value>
      init-param>
      
       
      <load-on-startup>0load-on-startup>      
servlet>

<servlet-mapping>
      <servlet-name>springmvcservlet-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;
	}
}

你可能感兴趣的:(软件开发架构平台,java,spring,maven,intellij-idea)