SpringMVC入门学习(二)应用注解方式+注解优化

转:http://blog.csdn.net/hejingyuan6/article/details/42177759

前篇已经介绍使用SpringMVC的方式进行环境搭建,以及一个简单的demo测试,下面我们再来介绍一下使用注解的方式,如何实现。

 

添加配置文件

 

springAnnotation-servlet.xml

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <!-- 注解扫描包 -->  
  2. <context:component-scan base-package="com.tgb.web.controller.annotation" />  
  3. <!-- 开启注解,这两种方式通用 -->  
  4.     <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
  5.     <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>  
  6.      -->  
  7.  <mvc:annotation-driven></mvc:annotation-driven>  
  8.   
  9. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  10.     <property name="prefix" value="/"></property>  
  11.     <property name="suffix" value=".jsp"></property>  
  12. </bean>  

web.xml


[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <servlet>  
  2.     <servlet-name>SpringMVC</servlet-name>  
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4.          <!-- 修改配置文件的名称和路径均可 -->  
  5.          <init-param>  
  6.             <param-name>contextConfigLocation</param-name>  
  7.             <!-- <param-value>classpath*:config/SpringMVC-servlet.xml</param-value> -->  
  8.             <param-value>classpath*:config/springAnnotation-servlet.xml</param-value>   
  9.         </init-param>   
  10.     <load-on-startup>1</load-on-startup>  
  11.   </servlet>  
  12.   <servlet-mapping>  
  13.     <servlet-name>SpringMVC</servlet-name>  
  14.     <url-pattern>/</url-pattern>  
  15.       
  16.   </servlet-mapping>  
  17.     


实例测试:

 

 

添加UserController


[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @Controller  
  2. public class UserController {  
  3.     /*方法的注解,value为浏览器的访问地址,method为接收方式*/  
  4.     @RequestMapping(value="/user/addUser",method=RequestMethod.GET)  
  5.     public ModelAndView addUser(){        
  6.         String result ="this is addUser------";  
  7.         /*向前台界面传值的方式---带参数的返回前台页面*/  
  8.         return new ModelAndView("/jquery","result",result);  
  9.     }  
  10.       
  11.     @RequestMapping(value="/user/delUser",method=RequestMethod.GET)  
  12.     public ModelAndView delUser(){  
  13.         String result ="this is delUser------";  
  14.         return new ModelAndView("/jquery","result",result);  
  15.     }  
  16.     @RequestMapping(value="/user/toUser",method=RequestMethod.GET)  
  17.     public ModelAndView toUser(){  
  18.         /*返回的页面*/  
  19.         return new ModelAndView("/jquery");  
  20.     }  
  21. }  


Jquery.jsp(提交方式为post,而如果此时addUser的接收方式为GET

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <form action="/SpringMVC/user/addUser" method="post">  
  2.     <h>SpringMVC注解</h>  
  3.     <br/>  
  4.     <div>  
  5.         ${result }  
  6.     </div>  
  7.         <input type="submit" value="post请求">  
  8.     </form>  

出现以下错误:

 

访问toUser时没有问题,但是当点击按钮时,报错!




解释:

 

当我们访问:http://localhost:8080/SpringMVC/user/toUser时,显示jquery页面,但是当我们点击jquery页面中的按钮时,会post提交到addUser的方法,而此时addUser的方法接收为Get,故报错。正确的方式是将addUser的接收方式改为POST

 

正确方式执行过程:

 

首先访问toUser,到达jquery页面,点击jquery页面的按钮,post提交到addUser,同时将addUser中的result参数返回




注意:

 

前台页面直接访问的方式只支持GET方式,即当我们的controller的接收方式均为GET时,均可以在浏览器中输入相应的地址访问到相应的页面

 

例如:




因为此时addUser的接收方式为GET,但是如果我们将它的接收方式改为Post,那么则会报如下错误,因为当我们直接访问页面,那么接收方式为Post,而提交方式默认为GET




我们想要get方法请求可以到,post方法请求也可以到

不想要区分的那么清楚,直接把那个配置删掉(method=RequestMethod.GET)

 

 

SpringMVC注解优化

 

1,对于要访问的均为同一目录下的方法时,可以这样修改

@RequestMapping("/user")

2,删除掉method的配置method=RequestMethod.GET

3,返回值为String类型

4,带参数使用

request.setAttribute("result",result);,引入import javax.servlet.http.HttpServletRequest;

 

优化后的Controller:


[java]  view plain copy print ?
  1. @Controller  
  2. @RequestMapping("/user")  
  3. public class UserController {  
  4.       
  5.     @RequestMapping("/addUser")  
  6.     public String addUser(HttpServletRequest request){  
  7.           
  8.         String result ="this is addUser------优化版";  
  9.         request.setAttribute("result", result);  
  10.         return "/jquery";  
  11.     }  
  12.       
  13.     @RequestMapping("/delUser")  
  14.     public String delUser(HttpServletRequest request){  
  15.         String result ="this is delUser------优化版";  
  16.         request.setAttribute("result", result);  
  17.         return "/jquery";  
  18.     }  
  19.     @RequestMapping("/toUser")  
  20.     public String toUser(HttpServletRequest request){  
  21.         return "/jquery";  
  22.     }  
  23. }  


总结:应用注解的方式使得我们不必去配置文件中写那么多映射代码,减少了开发人员的工作量。但是对于我们来说无论是注解还是配置文件的方式我们均需要了解,个人觉得配置文件的方式更容易让我们理解。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值