Spring MVC

一、Spring MVC概述

1.MVC模型:是一种架构型的模式,帮助我们将开发的结构组织的更加合理,使展示与模型分离、流程控制逻辑、业务逻辑调用与展示逻辑分离。
M:model模型 V:view视图 C:controller控制器
MVC执行逻辑图2.Spring MVC
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web 框架,即使用了MVC架构模式的思想,将web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发.
Spring MVC 请求处理流程:
Spring MVC 请求处理流程

二、简单的Spring MVC实现Hello World

1.所需jar包
所需jar包

2.在webapp目录下创建一个文件夹views,里面新建一个Hello.jsp,代码如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <h1>hello World</h1>
 <div>
 <!--通过EL表达式可以实现从Controller向jsp传递数据-->
  ${attName}
 </div>
</body>
</html>

3.创建applicationContext-mvc.xml配置文件,代码如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:util="http://www.springframework.org/schema/util"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 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/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util.xsd
        ">
   <!--将com.springboot.mvc.*.action包下的所有类扫描进ioc容器-->
    <context:component-scan base-package="com.springboot.mvc.*.action"></context:component-scan>    
 
 <!-- 
 配置视图解析器,prefix匹配前缀,suffix匹配后缀,如/views/sys/login.jsp在配置后应写为sys/login-->
 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/views/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean> 
</beans>

4.在webapp/WEB-INF下创建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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 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">
 <!--配置前端控制器,拦截所有的WEB请求。只需要引入org.springframework.web.servlet.DispatcherServlet-->
 <servlet>
  <servlet-name>DispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:config/applicationContext-mvc.xml</param-value>
  </init-param>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>DispatcherServlet</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>
</web-app>

5.创建HelloWorkdController类,

代码如下

//@Controller注解将其注释为控制器类,@RequestMapping("")写在类上,则访问处理器(带有@RequestMapping注解的方法)时加一层路径
@Controller
@RequestMapping("/hello")
public class HelloWorkdController {
	
	//使用@RequestMapping注解的方法才是真正处理请求的处理器
	@RequestMapping("/sayHello")
 	public ModelAndView sayHello() {
  	ModelAndView mav = new ModelAndView("/hello.jsp");
  	mav.addObject("attName", "attValue");
  	System.out.println("==========hello 在此路过============");
  	//处理器的返回值一般是一个ModelAndView对象,对象的属性值是key:value键值对。其中构造函数的参数是该处理器执行完毕后跳转的View页面,而addObject()方法则给该ModelAndView对象赋值并传递到执行完毕后跳转的页面,该值可以在jsp页面通过EL表达式获取
  	return mav;
 	}
 	
 	@RequestMapping("/hello")
	public String hello() {
	//处理器还有另外一种方式来传递信息以及跳转页面,返回值为String类型,代表目标页面路径。参数列表中有一个Map类型的形参,代笔殴打是要传递的数据,只需要将数据放入Map集合即可,自动封装成ModelAndView对象
 		map.put("attName", "另外一种方式");
 	//正常情况下应该是views/hello.jsp,此处因为applicationContext-mvc.xml中配置了前缀与后缀,故省略
 	return "hello";
	}

[注1]使用@Controller注解的类不需要继承特定的父类或者实现特定的接口,Controller接口的实现类只能处理一个单一请求动作,而@Controller注解的控制器可以支持同时处理多个请求动作,@Controller用于标记一个类,使用它标记的类就是一个Spring MVC Controller对象,即一个控制器类,类里的方法是控制器。
[注2]@RequestMapping注解的方法就是处理器,当url为该路径的时候就调用该处理器

6.总结(执行逻辑)
首先在浏览器地址栏输入从根目录到处理器的路径,本例为http://127.0.0.1:8080/springmvc/hello/sayHello。则tomcat会调用该方法,生成ModelAndView对象,跳转页面并传递数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值