知识储备
1、j2ee基础
2、spring框架基础
3、JDBC
4、Eclipse+Maven+Tomcat
SpringMVC基本工作流程前端控制器:DispatcherServlet
DispatcherServlet详解
1、作用分析
分发,拦截请求,委托请求给处理器;
将处理器返回的model给view
2、集成web环境的web.xml中的配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-common.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
注意点:
此时common管理的bean与springmvc管理的bean会在同一个容器中,<context:component-scan>中的地址有重叠则会重复加载bean,需要分离管理地址。
spring-common.xml:
spring-mvc.xml:
Controller处理器详解
@Controller注解声明了这个类是个controller处理器
@Scope注解:
在原有的spring中有的singleton(单例)和prototype(原型)的基础上增加了request级别和session级别
singleton:单例,永远只有一个对象服务;
prototype:每一个请求都会创建一个实例对象服务;
session:一个session创建一个对象服务;
@requestMapping(value="..."params="...",method=...)
params:参数限定 (不常用,了解即可)
在method中可有RequestMethod.GET和RequestMethod.POST也可有{RequestMethod.GET,RequestMethod.POST}复合型
注:prototype 原型模式的生命周期由JVM的GC来销毁,不会在容器关闭时调用destroy-method。
视图解析器
spring-mvc.xml配置
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置从项目根目录到指定目录一端路径 ,建议指定浅一点的目录-->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 文件的后缀名 -->
<property name="suffix" value=".jsp"></property>
</bean>
通过ModeAndView对象获得和返回参数
ModelAndView mav = new ModelAndView();
mav.setViewName("welcome");
mav.addObject("message","参数传递到页面");
return mav;
freemarket视图配置
<!-- 配置freeMarker的模板路径 -->
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
<!-- freeMarker视图解析器 -->
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix" value=".ftl"/>
<property name="contentType" value="text/html;charset=UTF-8"/>
</bean>
ajax返回对象json数据
需导包jackson-core和jackson-databind
@RequestMapping(value="empJson")
public @ResponseBody Emp ajax() {
Emp emp = new Emp();
emp.setName("jack");
emp.setAge(12);
return emp;
}
网友评论