首页 > 代码库 > 注解型SpringMvc为基础的框架设计(一)
注解型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)
11)文件系统(webservice)
---------------------------------------------------------分割线--------------------------------------------------------------
一:注解型SpringMVC
web程序入口在web.xml,写个Dispatcher(调度)Servlet,相当于struts2的FilterDispatcher,也是作为Spring的入口,所有*.action的请求都会进入这个调度器分发执行,他是负责流程控制(职责调度)的一个Servlet,他同时会把default.xml下的bean实例化到容器中。
<!-- 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}即可。
由此为止,一个请求到处理结束的转发均已完成,也就是一个MVC的完成。
明天写数据池、hibernate映射和操作数据库。
注解型SpringMvc为基础的框架设计(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。