SpringMVC简单配置
一、eclipse安装Spring插件
打开help下的Install New Software
点击add,location中输入http://dist.springsource.com/release/TOOLS/update/e4.5/ (4.5是版本号,不能高于eclipse的版本)
选择四个后缀为Spring IDE,点击next即可
二、SpringMVC的简单配置
1、在WEB-INF下的lib中加入jar包,点击下载(使用maven仓库后就可以直接添加依赖了 )
2、配置前端控制器【DispatcherServlet】
在web.xml中添加以下代码
<!--向服务器注册前端控制器! --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <!--DispatcherServlet指的是SpringMVC的前端控制器!,给服务器使用,创建servlet对象! --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化参数contextConfigLocation用于指定SpringMVC配置文件的路径以及名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value><!--不用init-param指定springMVC配置文件的路径位置时,默认会找 /WEB-INF/<servlet-name>-servlet.xml文件--> </init-param> <!-- 数字0或者大于0的数字表示的是:在服务器启动的时候创建Servlet对象,而不是第一次访问的时候创建 小于0的数字指的是:在第一次访问的时候创建Servlet对象. 在数字大于O的情况下,数字越小,优先级越高! --> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <!-- 用 servlet-mapping指定请求映射的路径--> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <!-- 用url-pattern指定拦截 的请求路径! --> <url-pattern>/</url-pattern> </servlet-mapping>
3、创建SpringMVC的配置文件并添加要扫描的包
注意:1.创建SpringMVC配置文件的名字要和上面在web.xml文件中指定的名字一致!
2.创建SpringMVC配置文件的时候使用的是Spring Bean Configuration File创建的,不是XML!
<!-- 配置SpingMVC容器要扫描的包! -->
<context:component-scan base-package="com.neuedu.controller"></context:component-scan>
4.配置视图解析器
<!--InternalResourceViewResolvers 是视图解析器 ,它会将逻辑视图转换成实际的物理视图,做一个转发操作!
也就是说具体步骤:前缀prefix + 方法的返回值 + 后缀suffix-->
<!-- /WEB-INF/views/success.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
5、在springMVC扫描的包下创建控制器类[Controller/Handler],注意要加入@Controller注解
/**
* 我们通过@RequestMapping做请求URL的映射!
* @return
*/
@RequestMapping("/sayHello") //@RequestMapping括号里指定请求url的请求路径
public String sayHello(){
return "success";
}
6、页面请求
<a href="${pageContext.request.contextPath }/hello">go</a> 请求路径问题看另一篇博客
三、常见配置
1、访问静态资源
对于静态资源文件如【js/css/图片】的访问我们需要在spingmvc配置文件中配置一个标签,如下所示:
<!-- 映射静态资源的访问请求 -->
<mvc:default-servlet-handler/>
<mvc:annotation-driven></mvc:annotation-driven>
为什么出现这样的问题:
优雅的REST风格的资源URL不希望带.html或.do等后缀,若将DispatcherServlet请求映射配置为/,
则SpringMVC将捕获WEB容器的所有请求,包括静态资源的请求,SpringMVC会将他们当成一个普通请求处理,因此找不到对应处理器将导致错误。
解决:在SpringMVC的配置文件中配置<mvc:default-servlet-handler>
2、数据格式化标签:
1.在SpringMVC配置文件中配置<mvc:annotation-driven/>
2.在目标POJO对象的属性上加上@NumberFormat 或者 @DateTimeFormat 注解!
@DateTimeFormat
pattern 属性:类型为字符串。指定解析/格式化字段数据的模式, 如:”yyyy-MM-dd hh:mm:ss”
@NumberFormat
pattern:类型为 String,自定义样式, 如patter="#,###";
3、数据类型转换以及数据格式化标签:
1. 自定义类型转换器实现Converter<S,T>接口并加入到SpringMVC的IOC容器中,
@Component public class EmployeeConverter implements Converter<String, Employee>{ @Override public Employee convert(String source) { System.out.println(source); if(source != null){ String[] vals = source.split("-"); if(vals != null && vals.length ==5){ String name = vals[0]; String email = vals[1]; Integer gender = Integer.parseInt(vals[2]); Department department = new Department(); department.setId(Integer.parseInt(vals[3])); Employee employee = new Employee(null, name, email, gender, department); return employee; } } return null; } }
2.配置自定义转换器到FormattingConversionServiceFactoryBean工厂中!
<!-- 将ConversionService再作为annotation-driven的一个属性存在! --> <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> <!-- 配置ConversionService --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="employeeConverter"/> </set> </property> </bean>