Springmvc注解优化
2016-04-14 16:37
357 查看
http://www.blogbus.com/wanping-logs/235898656.html
复习:上一节讲过,启用spring注解主要是两部分:一是启用扫描包,二是开启注解,注入两个bean,没有id,没有name,开启注解后,spring自动去调用这两个包。这两个bean在2、3后被代替了。
优化配置
注解驱动替代注解启动的两个包的配置
因为每次都要使用这两个bean,所以mvc加入一个注解驱动,不用加这两个包,只要加入注解驱动即可。<mvc:annotation-driver/>
Springmvc的配置文件中
增加mvc注解驱动配置,去掉注解启动的两个包的配置,如下:
<?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:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 注解扫描包
-->
<context:component-scan base-package="com.tgb.web.controller.annotation"
/>
<!-- 开启注解 -->
<mvc:annotation-driven/>
<!-- <bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>-->
<!-- 静态资源访问
-->
<mvc:resources
location="/img/" mapping="/img/**"/>
<mvc:resources
location="/js/" mapping="/js/**"/>
<bean
id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property
name="prefix" value="/"></property>
<property
name="suffix" value=".jsp"></property>
</bean>
</beans>
controller代码标识
为了区分,新建一个java的类,名为:User2Controller.java。代码内容不变,只是把模块标识从user改成user2,否则tomcat启动后,访问user标识,服务不知道该返回那个结果页面。User2Controller.java代码如下:
package
com.tgb.web.controller.annotation;
import
javax.servlet.http.HttpServletRequest;
import
org.springframework.stereotype.Controller;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/user2")
public class
User2Controller {
@RequestMapping("/addUser")
public String
addUser(HttpServletRequest request){
String result =
"this is addUser----优化版";
request.setAttribute("result", result);
return
"/annotation";
}
@RequestMapping("/delUser")
public String
delUser(HttpServletRequest request){
String result =
"this is delUser------优化版";
request.setAttribute("result", result);
return
"/annotation";
}
@RequestMapping("/toUser")
public String
toUser(HttpServletRequest request){
return
"/annotation";
}
}
部署tomcat,启动访问如下页面
localhost:8080/springMVC5/user2/addUser系统正常提供服务
Controller类优化,增加根目录
优化controller,类配置@RequestMapping来区分标签类也可以配置@RequestMapping,来区分标签user2。
Controller类优化:去掉没有必要的参数(去掉请求类型post、get)
去掉方法标签@RequestMapping里面method方法登陆区分get和post,其他地方没有必要区分这么细,还增加工作量。配置下get也能,post也能,这样效率大大提高。
@RequestMapping把method方法删除掉
public
@RequestMapping(value=“/addUser”,method=RequestMethod.GET)
改为
public
@RequestMapping(value=“/addUser”)
public
@RequestMapping(value=“/delUser”,method=RequestMethod.GET)
改为
public
@RequestMapping(value=“/delUser”)
public
@RequestMapping(value=“/toUser”,method=RequestMethod.GET)
改为
public
@RequestMapping(value=“/toUser”)
重启tomcat,达到相同的效果
总结:
方法的标签RequestMapping去掉发送消息的方法后,同样可以实现post和get方法。
不变的地方封装起来
Controller类优化:去掉@RequestMapping里面的value=
方法标签@RequestMapping第一个参数value去掉方法标签:
@RequestMapping(value=”/addUser”),改为@RequestMapping(“/addUser”);
@
RequestMapping(value=”/delUser”),改为@RequestMapping(“/delUser”);
@
RequestMapping(value=”/toUser”),改为@RequestMapping(“/toUser”);
同样达到相同的效果
Controller类优化:返回值简单
return newModelAndView(“/annotation”,”result”,result);
改为
return
“/annotation”;
重启tomcat,访问页面,同样达到相同的效果
Controller类优化:参数传递用传统的request.setAttribute
addUser()、delUser()、toUser()增加参数HttpServletRequestrequest
增加
request.setAttribute(“result”,result);
同样达到参数传递的效果。
总结:
Springmvc的优化主要从两大方面来进行的:<!--[if !supportLists]-->1.
<!--[endif]-->配置文件优化
增加了mvc标签----注解驱动<mvc:annotation-driven/>来代替两个bean:
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
让springmvc得配置变得简单。
<!--[if !supportLists]-->2.
<!--[endif]-->Controller类优化
<!--[if !supportLists]-->1)
<!--[endif]-->controller类优化,增加根目录
<!--[if !supportLists]-->2)
<!--[endif]-->去掉没有必要的参数,即去掉了http请求的方法post、get
<!--[if !supportLists]-->3)
<!--[endif]-->去掉方法标签@RequestMapping里面的”value=”,只传递value的值
<!--[if !supportLists]-->4)
<!--[endif]-->返回值简单,之前的返回值为ModelAndView,简化后,可以把ModelAndView当成字符串来对待,返回值为字符串,相应的return信息变得简单,只返回简单的字符串信息。
<!--[if !supportLists]-->5)
<!--[endif]-->参数传递,可以把之前的ModelAndView参数传递,用字符串属性设置(request.setAttribute)来代替,同时别忘记了在方法里加入request的定义,即HttpServletRequest
request。
Control类优化,增加根目录;去掉没必要的参数;返回值简单;参数传递用传统的request.setAttribute来取得。
参数传递和返回值可以用字符串代替。
Springmvc基础注解配置最简洁的配置
Controller之间没有依赖
配置特别少
相关文章推荐
- JavaWeb中的Filter
- spring 事务控制
- Springmvc注解启用
- Java内部类:概览(一)
- Java transient关键字
- Java并发编程系列之三十二:丢失的信号
- 【学习】Spring 的 AOP :基于Annotation 的“零配置”方式
- ANT 、Junit、JunitReport、Spring、MyBatis
- spring ico
- Spring中拦截/和拦截/*的区别 - 不能访问到返回的JSP - 访问静态资源(jpg,js等)
- 使用 Spring Data JPA 简化 JPA 开发
- 如何在spring中获取request对象
- Eclipse导出Library
- java反射机制
- Java接口
- 【Java】Socket入门 [一]
- JAVA实现链表
- Spring声明式事务
- 20145314郑凯杰 《Java程序设计》实验二 实验报告
- java中的三种取整函数