2019-06-21SpringMVC学习笔记

本文记录了学习SpringMVC的过程,包括创建SpringMvcHelloWorld项目,修改pom.xml、配置web.xml等步骤。还介绍了SpringMVC的配置解析、常用注解、参数传递、文件上传、异常处理等内容,最后阐述了SpringMVC运行原理及与struts2的区别。

本文用于记录本人学习springMVC的过程参考教程,感谢Sunnier大大的博客,这里基本借鉴他的教程完成每个步骤:
https://www.cnblogs.com/sunniest/p/4555801.html
本章的源代码地址是:https://download.youkuaiyun.com/download/romulusla01/11251738
一、创建一个SpringMvcHelloWorld
1、创建Maven project
(由于当中报错Unsupported major.minor version 52.0:,名字改为SpringMvcHelloWorld,与图片不一致)
在这里插入图片描述 在这里插入图片描述

生成项目如下
在这里插入图片描述
2、修改pom.xml,增加如下代码
进入https://mvnrepository.com/,找到想要的jar,复制其dependency代码
在这里插入图片描述
在这里插入图片描述

org.springframework
spring-web
4.1.2.RELEASE
compile


org.springframework
spring-webmvc
4.1.2.RELEASE
compile

3、配置web.xml

<?xml version="1.0" encoding="UTF-8"?>

<display-name>Spring MVC Application</display-name>

<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-servlet.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>

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
4、在src下添加springmvc-servlet.xml配置文件 <?xml version="1.0" encoding="UTF-8"?>
<!-- scan the package and the sub package -->
<context:component-scan base-package="test.SpringMVC.*"/>

<!-- don't handle the static resource -->
<mvc:default-servlet-handler />

<!-- if you use annotation you must configure following setting -->
<mvc:annotation-driven />

<!-- configure the InternalResourceViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
        id="internalResourceViewResolver">
    <!-- 前缀 -->
    <property name="prefix" value="/WEB-INF/jsp/" />
    <!-- 后缀 -->
    <property name="suffix" value=".jsp" />
</bean>
5、在WEB-INF文件夹下创建名为jsp的文件夹,用来存放jsp视图。创建一个hello.jsp,在body中添加“Hello World

在这里插入图片描述

6、建立包及Controller
在这里插入图片描述
7、编写Controller代码
package test.SpringMVC.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/mvc")
public class MvcController {
@RequestMapping("/sayhello “)
public String sayhello (){
return “hello”;
}
}
当请求sayhello时会映射到此方法中,返回的字符串 hello会被配置拼接为 WEB-INF/jsp/hello.jsp,并展示出来。
8、启动服务器,键入
http://localhost:8080/SpringMvcHelloWorld/mvc/sayhello
在这里插入图片描述
二、配置解析
1.Dispatcherservlet
  DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。
2.InternalResourceViewResolver
  视图名称解析器
3.以上出现的注解
@Controller 负责注册一个bean 到spring 上下文中
@RequestMapping 注解为控制器指定可以处理哪些 URL 请求
三、SpringMVC常用注解
@Controller
  负责注册一个bean 到spring 上下文中
@RequestMapping
  注解为控制器指定可以处理哪些 URL 请求
@RequestBody
  该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
@ResponseBody
   该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
@ModelAttribute    
  在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法
  在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中
@RequestParam 
  在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法
@PathVariable
  绑定 URL 占位符到入参
@ExceptionHandler
  注解到方法上,出现异常时会执行该方法
@ControllerAdvice
  使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常
四、传递参数,修改MvcController,新增sayhellotoRome.jsp
//请求mvc/sayhellotoRome
@RequestMapping(value=”/sayhellotoRome",method=RequestMethod.GET)
public String sayhellotoRome(ModelMap model){
model.addAttribute(“name”, “rome”);
return “sayhellotoRome”;//映射sayhellotoRome.jsp
}

//sayhellotoRome.jsp内容
<%@ page contentType=“text/html; charset=UTF-8” %>

Hello World

Hello ${name}

http://localhost:8080/SpringMvcHelloWorld/mvc/sayhellotoRome ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190621105019646.png) 五、自动装箱 1、创建User类 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019062110502838.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019062110503679.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvbXVsdXNsYTAx,size_16,color_FFFFFF,t_70) 2、修改mvcController ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019062110504645.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JvbXVsdXNsYTAx,size_16,color_FFFFFF,t_70) 浏览器中输入: http://localhost:8080/SpringMvcHelloWorld/mvc/toUser?user.name=rome&user.age=1 成功打印出 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190621105053506.png) 六、使用InitBinder来处理Date类型的参数

在这里插入图片描述
在这里插入图片描述
七、向前台传递参数
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

八、使用ajax调用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
九、在mvcController中用redirect方式跳转
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

十、文件上传
1、修改pom.xml
在这里插入图片描述
(注意:这里添加后,我报错了,redeploy项目之后就好了)
2、在SpringMVC配置文件中加入
在这里插入图片描述
3、修改mvcController
在这里插入图片描述
4、修改user.jsp
在这里插入图片描述
5、http://localhost:8080/SpringMvcHelloWorld/mvc/showUser
在这里插入图片描述
在这里插入图片描述
上传成功
十一、使用@RequestParam注解指定参数的name
在这里插入图片描述
http://localhost:8080/SpringMvcHelloWorld/mvc/testRequestParam?id=1&name=rome

在这里插入图片描述
在这里插入图片描述
十二、RESTFul风格的SringMVC
1、新增RestController类
在这里插入图片描述

在这里插入图片描述
2、form表单发送put和delete请求
在web.xml中配置
在这里插入图片描述
在前台可以用以下代码产生请求
在这里插入图片描述

http://localhost:8080/SpringMvcHelloWorld/mvc/sayhello
在这里插入图片描述在这里插入图片描述

十三、返回json格式的字符串
1、修改pom.xml
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

十四、异常的处理
在这里插入图片描述在这里插入图片描述

3.另一种处理全局异常的方法
在这里插入图片描述
在这里插入图片描述
http://localhost:8080/SpringMvcHelloWorld/mvc/sayhello
在这里插入图片描述
十五、设置一个自定义拦截器
拦截器的作用
参考:https://blog.youkuaiyun.com/fd2025/article/details/80564584
1.创建一个MyInterceptor类,并实现HandlerInterceptor接口
在这里插入图片描述
2.在SpringMVC的配置文件中配置
在这里插入图片描述
十六、表单的验证(使用Hibernate-validate)及国际化
1、编辑pom.xml
在这里插入图片描述
在这里插入图片描述

此处不宜用过高版本的hibernate,笔者惨痛经历(我是jdk1.7的,用了hibernate6以上的版本,反复报错,Unsupported major.minor version 52.0:)最后才发现要降低hibernate版本
2.编写实体类User并加上验证注解
在这里插入图片描述
3.在jsp中使用SpringMVC的form表单

在这里插入图片描述
4、formController
在这里插入图片描述在这里插入图片描述
http://localhost:8080/SpringMvcHelloWorld/form/addUser

在这里插入图片描述在这里插入图片描述

5.错误信息自定义
在src目录下添加locale.properties
在这里插入图片描述
在SpringMVC配置文件中配置
在这里插入图片描述
在这里插入图片描述

6.国际化显示
在src下添加locale_zh_CN.properties
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

locale.jsp
在这里插入图片描述

http://localhost:8080/SpringMvcHelloWorld/locale
在这里插入图片描述
或者(参考:https://blog.youkuaiyun.com/xiatianlong_xtl/article/details/52610606)

在这里插入图片描述在这里插入图片描述
http://localhost:8080/SpringMvcHelloWorld/locale/testLocaleChina
在这里插入图片描述
十七、压轴大戏–整合SpringIOC和SpringMVC
在这里插入图片描述
Menu
在这里插入图片描述
MenuService
在这里插入图片描述 在这里插入图片描述
MenuController
在这里插入图片描述
searchMenuList.jsp

在这里插入图片描述在这里插入图片描述

http://localhost:8080/SpringMvcHelloWorld/menu/searchMenuList

在这里插入图片描述
十八、SpringMVC运行原理

  1. 客户端请求提交到DispatcherServlet
  2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
  3. DispatcherServlet将请求提交到Controller
  4. Controller调用业务逻辑处理后,返回ModelAndView
  5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
  6. 视图负责将结果显示到客户端

十九、SpringMVC与struts2的区别
1、springmvc基于方法开发的,struts2基于类开发的。springmvc将url和controller里的方法映射。映射成功后springmvc生成一个Handler对象,对象中只包括了一个method。方法执行结束,形参数据销毁。springmvc的controller开发类似web service开发。
2、springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。
3、经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值