我现在学的是spring4.2

今天主要学习了Spring MVC注解

引入注解可以减少我们的代码量,优化我们的代码。

@Controller:用于标识是处理器类;

@RequestMapping:请求到处理器功能方法的映射规则;

还是以示例来解释说明

1 创建springAnnotation02项目,导入jar包。

这里的web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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">
  3. <display-name>springmvc01</display-name>
  4. <welcome-file-list>
  5. <welcome-file>index.html</welcome-file>
  6. <welcome-file>index.htm</welcome-file>
  7. <welcome-file>index.jsp</welcome-file>
  8. <welcome-file>default.html</welcome-file>
  9. <welcome-file>default.htm</welcome-file>
  10. <welcome-file>default.jsp</welcome-file>
  11. </welcome-file-list>
  12.  
  13. <!-- 前端控制器 -->
  14. <servlet>
  15. <servlet-name>springAnnotation</servlet-name>
  16. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  17.  
  18. <!-- 默认情况下:DispatcherServlet会寻找WEB-INF下,命名规范为[servlet-name]-servlet.xml文件。如:在上例中,它就会找/WEB-INF/spring-servlet.xml
  19. 如果需要修改,需要在web.xml中的<servlet>标记中增加 <init-param>。。。 </init-param>:-->
  20. <init-param>
  21. <param-name>contextConfigLocation</param-name>
  22. <param-value>/WEB-INF/classes/springAnnotation-servlet.xml</param-value>
  23. </init-param>
  24.  
  25. <!-- load-on-startup:表示启动容器时初始化该Servlet; -->
  26. <load-on-startup>1</load-on-startup>
  27. </servlet>
  28. <servlet-mapping>
  29. <servlet-name>springAnnotation</servlet-name>
  30. <url-pattern>*.do</url-pattern>
  31. </servlet-mapping>
  32.  
  33. <!-- 动态设置项目的运行路径 -->
  34. <context-param>
  35. <param-name>webAppRootKey</param-name>
  36. <param-value>spring.root</param-value>
  37. </context-param>
  38.  
  39. <!-- 加载LOG4J -->
  40. <context-param>
  41. <param-name>log4jConfigLocation</param-name>
  42. <param-value>/WEB-INF/log4j.xml</param-value>
  43. </context-param>
  44.  
  45. <context-param>
  46. <param-name>log4jRefreshInterval</param-name>
  47. <param-value>60000</param-value>
  48. </context-param>
  49.  
  50. <!-- spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter
  51. 用于解决POST方式造成的中文乱码问题 -->
  52. <filter>
  53. <filter-name>encodingFilter</filter-name>
  54. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  55. <init-param>
  56. <param-name>encoding</param-name>
  57. <param-value>UTF-8</param-value>
  58. </init-param>
  59. <init-param>
  60. <param-name>forceEncoding</param-name>
  61. <param-value>true</param-value>
  62. </init-param>
  63. </filter>
  64. <filter-mapping>
  65. <filter-name>encodingFilter</filter-name>
  66. <url-pattern>/*</url-pattern>
  67. </filter-mapping>
  68.  
  69. <!-- 启动log4j日志管理 -->
  70. <listener>
  71. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  72. </listener>
  73. </web-app>
由于要使用SpringMVC注解,所以springAnnotation-servlet.xml文件需要增加springmvc的标记命名空间。
未使用SpringMVC注解时:

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xsi:schemaLocation=
  5. "http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd">

修改过后的springAnnotation-servlet.xml。

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xsi:schemaLocation=
  6. "http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  9. http://www.springframework.org/schema/mvc
  10. http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

使用Spring mvc注解时一个完整的springAnnotation-servlet.xml配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation=
  7. "http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  10. http://www.springframework.org/schema/mvc
  11. http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
  12.  
  13. <!--开启注解 -->
  14. <mvc:annotation-driven />
  15.  
  16. <!--启用自动扫描 -->
  17. <context:component-scan base-package="com.cy.springannotation.controller" />
  18.  
  19. <!--配置视图解析器 -->
  20. <!-- ViewResolver 视图解析器 用于将返回的ModelAndView对象进行分离
  21. InternalResourceViewResolver:用于支持Servlet、JSP视图解析;
  22. viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包;
  23. prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),
  24. 比如传进来的逻辑视图名为WEB-INF/jsp/hello,则该该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”; -->
  25.  
  26. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  27. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
  28. <property name="prefix" value="/"></property> <!-- 我这里的视图直接放在WebRoot下的 -->
  29. <property name="suffix" value=".jsp"></property>
  30. </bean>
  31.  
  32. <!-- 为何不配置HandlerMapping?因为基于注解时,会自动使用DefaultAnnotationHandlerMapping -->
  33.  
  34. </beans>

接下来,我们完成一个最简单的通过控制实现页面间的跳转。

一个有提交的页面

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>登录页面</title>
  13.  
  14. <meta http-equiv="pragma" content="no-cache">
  15. <meta http-equiv="cache-control" content="no-cache">
  16. <meta http-equiv="expires" content="0">
  17. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  18. <meta http-equiv="description" content="This is my page">
  19. <!--
  20. <link rel="stylesheet" type="text/css" href="styles.css">
  21. -->
  22.  
  23. </head>
  24.  
  25. <body>
  26. <form action="login.do" method="post">
  27. <table>
  28. <tr>
  29. <td>用户名:</td>
  30. <td><input type="text" name="username"/></td>
  31. </tr>
  32. <tr>
  33. <td>班级</td>
  34. <td><input type="text" name="clazz"/></td>
  35. </tr>
  36. <tr>
  37. <td colspan="2"> <input type="submit" value="提交"/> </td>
  38. </tr>
  39. </table>
  40. </form>
  41. </body>
  42. </html>

控制器

  1. package com.cy.springannotation.controller;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5.  
  6. @Controller // @Controller告知Spring容器这是一个控制器组件
  7. public class LoginController {
  8. @RequestMapping("/login.do") // @RequestMapping告知该方法是针对/login.do请求的处理方法
  9. public String login(String username){
  10. System.out.println(username);
  11. return "index"; // 返回的字符串被当做ViewName
  12.  
  13. }
  14. }

以上的代码就可以进行一个简单的页面跳转。

接下来进一步了解@RequestMapping的特性

 1、可以被配置在控制器类名上。
如:

  1. @Controller
  2. @RequestMapping("/test")
  3. public class login.doController {
  4.  
  5. @RequestMapping("/login.do")
  6. public String login(){
  7. return "index";
  8. }
  9. }
  10.  
  11. //此时代表请求该方法的路径是:/test/login.spring
2、三个常用属性:value,params,method
   2-1、value必填属性,代表请求的url,支持模糊配置。(value字可以省略,但是属性值必须填)

@RequestMapping(value=“/users/**”)   匹配“/users/abc/abc”;

@RequestMapping(value="/product?")   匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”;

@RequestMapping(value="/product*")   匹配“/productabc”或“/product”,但不匹配“/productabc/abc”;

@RequestMapping(value="/product/*")   匹配“/product/abc”,但不匹配“/productabc”;

 
   2-2、params可选属性,代表对请求参数进行过滤

@RequestMapping(value="/login.do",params="flag")   代表请求中必须要有名为flag的提交项

@RequestMapping(value="/login.do",params="!flag")  代表请求中不能有名为flag的提交项

@RequestMapping(value="/login.do",params="flag=hello") 代表请求中必须有名为flag的提交项,且值为hello

@RequestMapping(value="/login.do",params="flag!=hello") 代表请求中如果有名为flag的提交项,其值不能为hello

@RequestMapping(value="/login.do",params={"flag1","flag2=hello"})代表请求中必须有名为flag1的提交项,同时必须有名为flag2的提交项,且flag2的值必须为hello

   2-3、method可选属性,代表请求方式
 

@RequestMapping(value="/login.do",method=RequestMethod.POST)

@RequestMapping(value="/login.do",method=RequestMethod.GET)

@RequestMapping(value="/login.do", method= {RequestMethod.POST, RequestMethod.GET}"

接下来是:请求处理方法可接收参数

Spring MVC 基础注解之@RequestMapping、@Controller、(二)的更多相关文章

  1. Spring MVC学习总结(2)——Spring MVC常用注解说明

        使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02     之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...

  2. spring mvc 基于注解的使用总结

    本文转自http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sprin ...

  3. Spring MVC 基础

    Spring MVC 基础 1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是 ...

  4. 基于spring mvc的注解DEMO完整例子

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件.本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mv ...

  5. spring mvc 基于注解 配置默认 handlermapping

    spring mvc 是类似于 Struts 的框架.他们都有一个最主要的功能就是URL路由.URL路由能将请求与响应请求处理逻辑的类(在Struts中即是action,在spring mvc 中即是 ...

  6. Spring MVC : Java模板引擎 Thymeleaf (二)

    本文原计划直接介绍Thymeleaf的视图解析,但考虑到学习的方便,决定先构建一个spring-mvc. 以下的全部过程仅仅要一个记事本和JDK就够了. 第一步,使用maven构建一个web app. ...

  7. Spring MVC——基础(简介,使用,地址映射)

    Spring MVC简介 重点Spring MVC的处理流程 Spring MVC特点 Spring MVC的使用 将相应的JAR包导入lib文件下 配置相关webxml 配置servlet-mvcx ...

  8. Spring的基础注解

    Spring的基础注解 1.注解的概述 注解是为了便于程序的调试而用于代替配置文件的一种程序语法,与配置文件具有互换性.通常基于注解编程的程序更加简洁. (注:使用Spring注解必须导入aop包) ...

  9. spring mvc: 多动作控制器(Controller下面实现多个访问的方法)MultiActionController / BeanNameUrlHandlerMapping

    spring mvc: 多动作控制器(Controller下面实现多个访问的方法) 比如我的控制器是UserController.java,下面有home, add, remove等多个方法 访问地址 ...

随机推荐

  1. 棋盘问题 分类: 搜索 POJ 2015-08-09 13:02 4人阅读 评论(0) 收藏

    棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28474 Accepted: 14084 Description 在一 ...

  2. Linux文件描述符与打开文件之间的区别(转载)

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239   1. 概述     在Linux系统中一切皆可以看成是文件,文件又可分为: ...

  3. google prettify 代码高亮显示

    引入js和css文件 下载地址 http://files.cnblogs.com/jaday/prettify.zip js文件代码 !function(){var q=null;window.PR_ ...

  4. 取模(mod)

    取模(mod) [题目描述] 有一个整数a和n个整数b_1, …, b_n.在这些数中选出若干个数并重新排列,得到c_1,…, c_r.我们想保证a mod c_1 mod c_2 mod … mod ...

  5. 土豪聪要请客(stol)

    土豪聪要请客(stol) 众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多…… 某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客.他在自己在XX星 ...

  6. Spark系列之二——一个高效的分布式计算系统

    1.什么是Spark? Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有H ...

  7. java中的构造函数

    在c++中就学习了构造函数,今天学习java又碰到了构造函数,重新写一篇博客来理解一下 其实直接听这个词并不能理解这是什么,但其实看了它的作用,就很好理解了 当创建一个对象时,往往需要做一些初始化工作 ...

  8. 1-NPM

    什么是NPM NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从N ...

  9. java基础 (java工程师入门应该了解的)

    1)建立Java开发环境 2)理解Java特性(features) 3)理解Java虚拟机软件的功能 4)描述垃圾回收概念 5)枚举实现Java代码安全方式 6)编码 编译  运行 JAav 应用程序 ...

  10. Win7 winsock 注册表文件

    http://files.cnblogs.com/xsmhero/Winsock_Win7x64.rar