据说目前 spring mvc 比 struts2 使用更普遍,所以需要学习一下。
先学了一个入门的例子,以便好好领会一下 spring mvc 各部分的作用,这里记录一下这第一个项目的流程。
环境: win10+MyEclipse10+jdk1.7+tomcat8
项目最终结构如下:
一、创建项目
在 MyEclipse10 中 New->Web Project ,名称为 springmvc001 。
通过buid path导入必须的jar文件,如下所示:
其中spring-mvc为自定义的库,包含了spring mvc所需的jar文件,目前包含以下jar文件,仅对此项目而言并无不妥,可能有多余的文件:
二、配置文件
web.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>springmvc001</display-name>
<servlet>
<servlet-name>myspring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myspring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
这里给spring的分发器命名为myspring,那么在WEB-INF目录下须创建一个与此名称对应的配置文件,命名规则是 servletname-servlet.xml,所以此处要创建的配置文件名为myspring-servlet.xml,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 配置映射handlerMapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置控制器 -->
<bean name="/hello.do" class="com.sunny.controller.HelloWorldController"/>
</beans>
三、编写view视图层的jsp文件
与前面myspring-servlet.xml 中视图解析器的配置相呼应,这里将编写两个jsp文件,并且存放在WebRoot/jsp目录下:
(1) hello.jsp---作用:输入消息内容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'hello.jsp' starting page</title>
</head>
<body>
<!-- 这里的actio属性值以basePath为参照 -->
<form action="hello.do" method="post">
<input name="hellomsg"/>
<input type="submit" value="send" />
</form>
</body>
</html>
(2) showMsg.jsp---作用:显示所得到的消息内容,关键代码如下:
<body>
${message}
</body>
package com.sunny.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloWorldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse arg1) throws Exception {
//处理请求,向指定的view传递model信息
ModelAndView mv=new ModelAndView();
mv.addObject("message", "Hello,"+request.getParameter("hellomsg"));
mv.setViewName("showMsg");
return mv;
}
}
这个控制器类中,接收了来自hello.jsp中的表单内容,并将其发往名称为showMsg的视图中。根据前面在myspring-servlet.xml中的配置段,视图前缀为/jsp/,后缀为.jsp,因此访问该视图的url实质上为 /jsp/showMsg.jsp.
最后,发布到 Tomcat8服务器中,在浏览器中输入 http://localhost:8080/springmvc001/hello.jsp,输入内容后测试通过。
为了处理中文参数,项目中还简单地写了一个CharacterEncodingFilter。