springMVC操作步骤:

第一步:导入jar(spring4个核心+日志+spring-web+spring-webmvc+spring-aop)

第二步:在web.xml中配置前端控制器(servlet),并读取springmvc的资源文件springmvc.xml

 <servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!-- 加载资源文件 --><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>

如果不手动添加资源文件的话,springmvc默认的资源文件位置在WEB-INF下,默认文件名为:servlet名-servlet.xml.

第三步:建立springmvc.xml的资源文件,并进行controller包扫描和配置视图解析器

<?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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><context:component-scan base-package="com.sms.springmvc.controller"></context:component-scan></beans>

第四步:在类上加@Controller注解,代表这是一个处理请求的类

第五步:在方法上添加@RequestMapping注解,其中value属性的值为用户请求的地址.

@RequestMapping注解详解:

@RequestMapping属性包含以下几个:

  • ①value:请求路径和value属性值一致时,该注解标注的方法即为处理请求的方法
  • ②method:用来设置处理请求的方式,客户请求的方式和method属性的值一致时才可以处理请求.
  • ③parmas:用来设置客户端传到服务器端的数据必须符合某些规则.要求请求路径必须带有parmas属性的值才能处理该请求.

@RequestMapping作用的位置:

  • ①放在方法上:
    只对该方法有效

  • ②放在类上:
    对当前类的所有方法有效
    放在类上时一般只使用value属性.加上value属性后访问路径变成:项目名/类上的value值/方法上的value值

@RequestMapping支持Ant方式的访问路径:

  • *:表示任意一层目录
  • ?:表示任意一个字符
  • **:表示任意多层目录

REST风格:使用@PathVariable获得占位符的数据,并赋值给形参

@PathVariable注解的使用:

在Spring3.0之后可以支持URL 传参,带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向REST 目标挺进发展过程中具有里程碑的意义。
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中.

如URL 中的 /student/{name} 占位符可以通过@PathVariable(“name”) 绑定到操作方法的入参中。

@RequestMapping(" /student/{name}")public User testPathVaeiable(@PathVariable("name") String name){return userService.selectUser(name);}

@RequestParam的作用:

当前端向后端传值时,若请求的参数和controller方法的形参一致就可以自动赋值.若不一致使用@RequestParam进行指定

@RequestParam的value属性:
通过value指定映射关系
如:@RequestParam(value=“name”)String username,可以指定前端传过来的name输入框的值赋值给username这个形参.

@RequestParam的required属性:
取消自动装配的必须性
如:@RequestParam(value=“name”,required=false),若前端没有名为name这个输入框,服务器也不会报错,有则获取,没有则为空值.

@RequestParam的defaultValue:设置默认值,没有传参时使用该值

SpringMVC获取客户端传来的参数的方式:

①在处理器的方法中加入对应的形参,保证该形参和请求的参数name一致

②使用pojo对象接收数据:当pojo对象的属性和客户端表单name 的值一致时可以接收数据,且支持级联关系

③使用servlet原生API获取参数如:HTTPServletRequest,HttpServletRespnse,HttpSession(不推荐)

SpringMVC中controller方法的返回值的几种类型解说:

①使用ModelAndView存值并进行跳转,方法的返回值为ModelAndView类型**

②返回void,使用servlet原生APIrequest和response实现存值和跳转(不推荐).**

③返回String,直接return " 资源路径"实现转发操作,
return "redirect: 资源路径"实现重定向操作,形参中传入Model对象,使用model对象进行存值,存在request域中**

设置视图的方式不一样后台所创建的视图类型也不一样.

①使用转发的方式:return “资源路径”;后台会创建一个InternalResourceView对象,对该资源路径进行解析,解析后执行getRequestDispatcher().forward(request,response)命令

②使用重定向的方式:return “redirect:资源路径"的方式,后台会创建一个RedirectView对象,对该资源进行解析,解析后执行sendRedirect(”")命令.

< mvc:default-Servlet-handler/>标签的作用:

配合< mvc:annotation-driven/>标签,把项目中的静态资源文件(如js文件,css文件)交给tomcat中默认的servlet去处理,不经过前端控制器的处理.

@ResponseBody的作用:

一个处理器若加上了@ResponseBody这个注解,那么该处理器里面就不能在实现页面的跳转。就算返回一个字符串,也会将该字符串作为一个数据响应到客户端。返回的任何类型都会转化为json对象。但需要jackson的jar包的支持.因为springMVC底层使用jackson技术进行数据格式的转换.

Json有两种形式:①Json对象:{key:value,key:value,…};②Json数组:[{key:value,key:value…},{key:value,key:value…},…]

步骤一:加入jackson的jar包(三个).
步骤二:在springMVC.xml中开启mvc注解驱动.
步骤三:在需要转化为json数据的处理器上面加上@ResponseBody注解.
步骤四:在需要转换为json数据的对象直接作为返回值返回.

示例:
①控制器向客户端响应一个json数据类型的list集合:

@Controller
public class TestController {@RequestMapping("testJson")@ResponseBodypublic List<User> testJson(){ArrayList<User> list = new ArrayList<>();User user1 = new User(1001, "张三", "男", 12);User user2 = new User(1002, "李四", "男", 22);User user3 = new User(1003, "王五", "男", 32);User user4 = new User(1004, "赵六", "男", 42);list.add(user1);list.add(user2);list.add(user3);list.add(user4);//返回的list集合到客户端后就回转化成json格式return list;}
}

②客户端执行ajax请求,希望响应回一个json的数组:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.11.3.min.js"></script><script type="text/javascript">//文档加载函数$(function(){$("#btn").click(function(){//执行ajax请求,请求路径为controller中的testJson这个控制器$.post("testJson",function(data){//data装载返回的list集合//循环遍历出data里面的json数组$(data).each(function(i,u){$("body").append("<p>id="+u.id+",username="+u.username+",gender="+u.gender+",age="+u.age +"</p>")})},"json")})})</script>
</head>
<body><!-- 点击按钮触发ajax请求 --><input id="btn" type="button" value="测试json"/>
</body>
</html>

springMVC实现上传的功能:

在没有使用springMVC的时候,实现上传功能,我们需要用一个File类型来接收,但使用了springMVC后,我们可以使用MultipartFile类型来接收,因此,需要在springMVC中配置一个解析器来将File类型转化为MultipartFile类型

步骤一:导入commons-io和commons-fileload的jar包;
上传功能需要这两个jar包才能被支持
步骤二:在springmvc.xml中配置解析器MultipartResolver,其中id必须为multipartResolver,因为要和DispatcherServlet类中的属性保持一致;
该解析器可以将客户端传来的File类型的对象转化为MultipartFile类型,该类型被springMVC封装,包含了许多关于上传的强大的功能.
配置如下:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>

步骤三:在客户端编写上传文件的代码,指定文件域中的name 值和控制器形参中Multipart的名一致.:

<form action="up" method="post" enctype="multipart/form-data">头像:<input type="file" name="uploadFile"/>描述:<input type="text" name="desc"/><input type="submit" value="上传"/>
</form>
@RequestMapping(value="up",method=RequestMethod.POST)public String up(String desc,MultipartFile uploadFile) throws IOException{//获取文件要写出的路径String originalFilename = uploadFile.getOriginalFilename();//解决图片重名问题String finalFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));String path = session.getServletContext().getRealPath("photo") + File.separator + finalFileName;//将上传的图片写到path下uploadFile.transferTo(new File(path));return "success";}

配置拦截器interceptor:

需要实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter这个类.

第一步:创建一个类实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter这个类

第二步:将该类作为拦截器配置在springMVC中

 <mvc:interceptors><mvc:mapping path="/**"/><mvc:exclude-mapping path="/login"/>   <mvc:exclude-mapping path="/index"/><bean id="myInterceptor" class="com.sms.mvc.interceptor"></bean></mvc:interceptors>

HandlerInterceptor中重写的方法的作用:
preHandle:在请求之前进行拦截,有boolean类型的返回值,返回true则放行
postHandle:在controller处理器处理完数据后,返回modelAndView之前执行
afterCompletion:页面渲染后执行,可以对异常进行处理

多个拦截器执行顺序:

如有两个拦截器(1)方法执行前返回值都为true,则顺序如下方法执行前1   方法执行前2方法执行后2方法执行后1页面渲染后2页面渲染后1

springMVC和Spring 的整合:

问题一:springMVC.xml可以被web.xml以servlet 的形式加载.那么spring的配置文件applicationContext.xml被谁加载?什么时候加载?

spring的配置文件需要被配置在web.xml 的context上下文中,以< context-param> 的形式去加载spring的配置文件,如若不以这样的形式,那么web.xml会默认加载WEB-INF下的applicationContext.xml.
配置spring后,需要在服务器开启时创建一个spring 的容器,因此需要配置一个loaderContextListener创建spring的容器.

<!-- 加载spring的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext-*.xml</param-value></context-param>
<!-- 配置监听器加载spring容器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

SpringMVC框架的详细操作步骤和注解的用法相关推荐

  1. html诗词赏析网页制作步骤,制作网页详细操作步骤

    制作网页详细操作步骤 导读:目前所见即所得类型的工具越来越多,使用也越来越方便,所以制作网页已经变成了一件轻松的工作,不像以前要手工编写一行行的源代码那样.下面和小编一起去看看相关内容~ 制作网页主要 ...

  2. 手机投屏电视html,oppor17手机投屏电视的详细操作步骤

    再也不担心在手机中看电视不过瘾了,oppor17手机可以投屏电视了,以下教程就分享了oppor17手机投屏电视的详细操作步骤. 1.如果电视机是非智能的普通电视机,则无法支持无线传屏; 2.如果电视机 ...

  3. HTML设计的步骤,网页设计详细操作步骤

    网页设计详细操作步骤 网页设计是一个比较吃香的行业,要真正做一个好的网页,还必须有良好的设计功底.下面是小编分享的网页设计详细操作步骤,一起来看一下吧. 一.确定网页主题 网页主题就是你建立的网页所要 ...

  4. FPGA设计中,Vivado 调用IP核详细操作步骤

    FPGA设计中,Vivado 调用IP核详细操作步骤 今天给大侠带来了FPGA设计中,Vivado 调用IP核详细操作步骤,话不多说,手把手教学,请往下看. 首先咱们来了解一下vivado的IP核,I ...

  5. Win10如何升级Win11详细操作步骤

    Win11系统已经正式推出一段时间了,有不少用户想要体验一下新系统,但是不知道怎么操作.不要担心,下面小编就给大家整理了一篇Win10升级Win11的详细操作步骤,感兴趣的用户可以看看. 系统之家一键 ...

  6. QT调试的详细操作步骤

    QT调试的详细操作步骤(配案例) QT版本:5.8.0 一.断点调试 二.单步调试 三.用qDebug()调试. 参考文献: QT版本:5.8.0 一.断点调试 QT提供了一个很有用的调试方式:断点调 ...

  7. jbod ugood 磁盘驱动状态_AS SSD Benchmark查看硬盘状态的详细操作步骤

    最近很多朋友咨询关于AS SSD Benchmark怎么查看硬盘状态的问题,今天的这篇教程就来聊一聊这个话题,希望可以帮助到有需要的朋友. AS SSD Benchmark查看硬盘状态的详细操作步骤 ...

  8. flash计算机操作步骤,flash案例详细操作步骤(绝对全).doc

    flash案例详细操作步骤(绝对全) 安徽理工大学 计算机专业2008级认识实习大纲.计划 (2009.10) 课内学时:2周 学分数:3.0 三.动画制作Flash 1.实习性质.任务与目的 本实习 ...

  9. 脱壳的几种方法 详细操作步骤

    脱壳的几种方法  详细操作步骤 常见脱壳知识: 1.PUSHAD (压栈) 代表程序的入口点 2.POPAD (出栈) 代表程序的出口点,与PUSHAD相对应,一般找到这个,说明OEP可能就在附近 3 ...

最新文章

  1. c++语言函数大全,C++函数
  2. Html5浏览器支持
  3. 由点到面 旅游让丝路明珠敦煌更加智慧
  4. Vcenter一次性将服务器四个网卡从端口组迁移到分布式交换机的方法
  5. 理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的
  6. 使用RAC和Data Guard构建MAA架构
  7. javascript --- 自定义数组的反序函数
  8. 二十一 JDK注解注解案例
  9. 《linux核心应用命令速查》连载一:accton:打开或关闭进程统计
  10. 深度优先搜索与广度优先搜索———模板
  11. 计算机组装与维护精品,国家精品课程——《计算机组装与维护》.pdf
  12. 蚂蚁森林「偷能量」和「反洗钱」,用的竟是同一种技术!
  13. Java实现在线打开word文档加盖印章/盖章/签名功能
  14. RL基础算法优缺点总结
  15. 1.2GHz Atom处理器 诺基亚N9配置曝光
  16. 使用搜索引擎时如何去除广告推荐
  17. 解决sudo: no valid sudoers sources found, quitting
  18. BZOJ4480:快乐的jyy(回文自动机)
  19. 中国虚拟人哪家强?沙利文、IDC:小冰百度商汤位列第一梯队
  20. PAT 乙级 1040 有几个PAT (25分)

热门文章

  1. python报错 SyntaxError: invalid character in identifier
  2. 【机器学习算法-python实现】最大似然估计(Maximum Likelihood)
  3. 京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践
  4. Angular 中的依赖注入link
  5. Libra深度解析!
  6. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho
  7. Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
  8. RocketMQ-初体验RocketMQ(08)-IDEA拉取调测RocketMQ源码
  9. Oracle-PROCEDURE权限解读
  10. arm el2与el3_ARMv8的学习笔记