注解型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
我们先来说说MVC的概念:浏览器发送请求,核心控制器参考配置文件将各个请求分配给不同的action去处理,控制器把请求交给action去处理之前,会将请求参数封装成一个参数对象参数对象获得后调用校验方法进行校验,通过后将对象传递给指定的方法,action执行完后返回结果视图,通过路径解析关联到某个页面。
1 核心控制器
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>

2 参数对象+结果视图
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映射和操作数据库。


---------------------------------------------------------------------------------------------------------------
现在发送在CSDN上的文章都能在手机端查看啦,走路上班、闲暇之余可以看看手机,共勉共进!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值