注解型SpringMvc为基础的框架设计(一)
最近(2014年底)关于现下流行的框架,自己做个整合,如果有想自己写个框架的,可以参考下,包含内容
1)MVC框架(SpringMVC)2)数据池(dbcp)
3)映射框架(hibernate) ---- 用hibernate做的映射,操作数据库采用Hibernate+SpringJdbc的方式
4)CSS框架(bootstrap)
5)日志管理(slf4j+log4j) ---- thymeleaf框架采用slf4j,所以用slf4j做框架,引用lig4j做的日志
6)缓存管理(oacache)
7)一个AOP实例(可以做,异常处理、日志管理等,实例已写好,自己发挥)
8)优化项目启动时间(no http) ---- no
9)事务管理(注解声明式)
10)静态页面(thymeleaf)
<!-- spring Mvc配置 --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/default.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping></span>在default.xml下把bean对象创建出来,我们采用注解的方式
<!-- 启动spring mvc注解功能 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" lazy-init="false" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />选择扫描包路径,我们把dao、service、action 3层的包都扫描一遍
<!-- 设置使用注解的类所在的package包 --> <context:component-scan base-package="com.mysi.dao"></context:component-scan> <context:component-scan base-package="com.mysi.service"></context:component-scan> <context:component-scan base-package="com.mysi.action"></context:component-scan>bean初始化之后,请求根据转向路径进入不同的action,在控制器把请求交给action去处理之前,会将请求参数封装成一个参数对象,在spring里面就是一个ModelAndView对象(spring参数对象颇多,此处先用ModelAndView做例,下面会详细介绍),用来替代struts2繁琐的属性封装,ModelAndView=model+view,model就是他作为容器和页面共享数据的意思(其实他们都相当于一个参数对象的map而已),view是指Action执行完后要返回的结果视图,当然这个视图和struts2一样也可以是一个字符串,再通过路径解析找到页面
<!-- 对转向页面的路径解析 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp"/>
@Controller public class MainAction { @RequestMapping("/mainPage") //如果你要返回一个string作为结果视图,那么你需要把一个modelMap作为参数,把对象共享在容器中 public String mainPage(HttpServletRequest request,ModelMap modelMap) { String message = request.getParameter("message"); modelMap.addAttribute("message",message); return "main/main"; } @RequestMapping("/mainPage1") //如果你返回一个ModelAndView那么把共享的对象放在ModelAndView里面(此时没有路径解析) public ModelAndView mainPage1(HttpServletRequest request) { String message = request.getParameter("message"); ModelMap modelMap = new ModelMap(); modelMap.addAttribute("message",message); return new ModelAndView("forward:jsp/main/main.jsp",modelMap); } }在页面上接收message直接采用${message}即可。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。