SpringMVC入门(一)

来源:互联网 发布:搞笑网络段子精选 编辑:程序博客网 时间:2024/03/29 15:18

一、基本原理


SpringMVC处理请求的流程:



二、搭建环境

1.引入相关资源jar包

Spring框架jar包:spring-framework-3.2.1.RELEASE
web容器:tomcat7.0
apache commons logging日志:spring-framework-3.2.1.RELEASE
Spring框架jar包:spring-framework-3.2.1.RELEASE
jstl标签库的支持:jstl-1.1.2.jar和standard-1.1.2.jar

2.配置web.xml文件


load-on-startup:表示启动容器时初始化该Servlet的优先级,越接近0表示优先级越高,负数最低;

url-pattern:表示哪些请求交给SpringMVC处理, “/” 是用来定义默认servlet映射。可如“*.html”表示拦截所有以html为扩展名的请求。

我们配置Spring的配置文件,默认DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。
本示例为创建source folder,配置文件都放置在该目录下,因此需要配置<init-param>说明配置文件位置


三、配置hello-servlet.xml文件


1.通过BeanNameUrlHandlerMapping进行url映射



此处出现一则疑问:在WEB-INF下创建jsp文件夹,里面的jsp页面无法被访问!改成page后,里面jsp页面可以被访问!原理未知哭


1.1.编写HelloController




BeanNameUrlHandlerMapping方法总结:通过bean的name来映射controller,那么该controller中必定只能有一个方法,否则无法判断该调用哪个方法。假设要为user进行增删改查的操作,根据上述操作需要为每一种操作配置一个controller,配置文件会非常复杂而且不易于管理。但是该方法很好的展现了springMVC的思路流程,也应该学习!

基于BeanNameUrlHandlerMapping的缺点,springMVC提供了annotation注解的方式完成映射

2.通过Annotation方式进行url映射


2.1.在Controller类前加入注解@Controller

2.2.通过@RequestMapping注解的方法映射DispatcherServlet截获的url

注:曾遇到使用annotation注解方式时,tomcat会报错,排查后发现是兼容性的问题,我用的是spring-framework-3.x.RELEASE+java1.8。
spring-framework-3.x.RELEASE+java1.7    或者     spring-framework-4.x.RELEASE+java1.8,如此配置才能完美使用

3.配置全局异常



4.配置静态文件(WebRoot/static/{css,js,image})的映射

<!-- 页面中引入静态文件时,路径会被dispatcherServlet截获,所以要有一下配置 -->
    <mvc:resources location="/static/" mapping="/static/**"/>
<!-- jsp页面导入css样式写法 -->
<link href="<%=path%>/static/css/main.css" rel="stylesheet" type="text/css"/>

5.文件上传

5.1 项目导入文件上传相关jar

commons-fileupload-1.2.2.jar        commons-io-2.4.jar  

5.2 项目导入文件上传相关jar

修改add.jsp
<body>
<!-- modelAttribute指的是进入该方法时model传入的属性是一个User,controller中需要传参 -->
<form:form action="/user/add" modelAttribute="user" method="post" enctype="multipart/form-data">
ID:<form:input path="id"/><br/>
用户名:<form:input path="userName"/><form:errors path="userName"/><br/>
密码:<form:password path="password"/><form:errors path="password"/><br/>
附件:<input type="file" name="attach"/><br/>
<input type="submit" value="提交"/>
</form:form>
</body>

5.3 修改hello-servlet.xml,增加文件上传相关配置

<!-- 配置文件上传 multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="500000"/>
</bean>

5.4 修改相应的UserController

@RequestMapping(value="/add",method=RequestMethod.POST)
public String addUser(@RequestParam MultipartFile attach,HttpServletRequest request){

//创建文件需要上传的文件夹地址
String uploadFilePath=request.getSession().getServletContext().getRealPath("/static/upload");
try {
//判断传入的attach是否为空
if(!attach.isEmpty()){
File file = new File(uploadFilePath+File.separator+attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(), file);
}
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/user/list";
}



  

0 0