SpringMVC的最简应用
目前用SpringMVC越来越流行,个人所在的公司也是用Spring+Hibernate框架作开发,故作此简易实例以资自勉。如果读者阅读本文费力,建议先学java的基础部分,而不必浪费时间在此处。如果读者是专业达人就请多多指教。
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。
Spring MVC框架的优点:简单就是美,强大不失灵活,性能也很优秀。
Spring和struts,hibernate组成mvc的三大框架,也就是大家所说的ssh框架。本例只介绍Spring。
本例是SpringMVC的入门演练。
首先提及一下Spring的正式下载地址: http://www.springsource.org/download/
最好选择带文档的版本下载。本例使用的是3.1的release版本。
本实例中还有两个架包将在附件中提供。
面对框架的第一个问题是导入架包。
1本实例需要导入的架包有:
org.springframework.asm-3.1.1.RELEASE.jar
org.springframework.beans-3.1.1.RELEASE.jar
org.springframework.context-3.1.1.RELEASE.jar
org.springframework.core-3.1.1.RELEASE.jar
org.springframework.expression-3.1.1.RELEASE.jar
org.springframework.web-3.1.1.RELEASE.jar
org.springframework.web.servlet-3.1.1.RELEASE.jar
commons-logging-1.0.4.jar
jstl.jar
附加简略说明:最后两个架包不是Spring框架中的架包。
2本实例需要在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_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>mvc</display-name> <filter> <!-- Spring的编码过滤 --> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <!-- SpringMVC的设置 --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/springMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
附加简略说明:web.xml文件先作了编码过滤器的设置,后作了SpringMVC的设置。
请注意<param-value>classpath*:/springMVC.xml</param-value>的意思是在编绎目录下放置SpringMVC所需要的配置文件。
3在src目录下新建springMVC.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:p="http://www.springframework.org/schema/p" 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/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 自动扫描的包名 --> <context:component-scan base-package="com.mvc" ></context:component-scan> <!-- 视图解释类 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <!--路径前缀--> <property name="suffix" value=".jsp"/><!--路径后缀可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> </bean> </beans>
附加简略说明:请注意<property name="prefix" value="/WEB-INF/jsp/"/>的配置是一种出于安全性考虑的jsp路径配置。在WebContent目录下的jsp都是可以被直接访问的。而目录/WebContent/WEB-INF/是不能被直接访问的。所以在/WebContent/WEB-INF/目录下手工新建工作目录,再使用配置指向新建工作目录。
4 在/WebContent/目录下新建index.jsp文件。如果是使用MyElicpse开发则在建立Web项目时默认已经添加。添加代码如下:
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>SpringMVC演示</title> </head> <body> SpringMVC演示<br/> 将文本框的内容输入至后台处理再返回其处理结果返回到jsp文件夹中的return.jsp页面中<br/> <form action="login.do" method="post"> <input type="text" id="text1" name="var" /> <input type="submit" value="提交"/> </form> <a href="login.do?var=中文参数请求">后台请求</a> </body> </html>
附加简略说明:本页面上有种请求方式:POST和GET。
由GET方式的提交导致的中文乱码问题需要在tomcat的conf文件夹下的server.xml文件中,更改端口的节点,添加属性URIEncoding="utf-8"
而由POST方式的提交导致的中文乱码问题可以由Spring编码过滤器解决(web.xml已经完成这项配置)。
5 在src中新建包名com.demo.controller,再在此包中新建LoginCtroller类。添加代码如下:
package com.mvc.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class LoginCtroller { @RequestMapping("/login")//通过注释完成Spring的配置 请注意里面的参数"/login"对应前台页面的请求URI public String login(HttpServletRequest request,HttpServletResponse response){ String var = (String)request.getParameter("var"); System.out.println("从前台得到的值:"+var); request.setAttribute("msg", "从后台发来的测试数据=>"+var); //返回WebContent/WEB-INF/jsp/return.jsp页面 请参照springMVC.xml的配置来理解 return "return"; } }
附加简略说明:后台处理有很多种变化。本例演示的是比较实用的写法。
6 再在/jsp/目录中新建return.jsp文件,添加代码如下:
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>返回后台处理的结果</title> <script type="text/javascript" src="./ref/jquery-1.7.2.js"></script> </head> <body> 返回后台处理的结果<br/> ${msg} </body> </html>
附加简略说明:返回页面
总结:本实例的演示如有疏漏可以从附件中下载演示项目来运行。源代码是GBK格式编码。
如果没有相关的srping编写经验,建议你从本页附件下载实例来学习和研究。
这种代码的编写方式意味着程序员在编写代码的时候不需要专注于配置xml文件,从而在一定程度上提高开发效率。