传统web方式整合SSM(spring、springMVC、mybatis)搭建SSM项目

1、Eclipse新建Dynamic Web Project项目:

    (1) 将下载好的spring mybatis  及其整合包拷贝到WebContent----------WEB-INF---------lib目录下面,如下图所示:

    

jar下载地址:http://download.csdn.net/download/fengchengwu2012/10262888

   (2)在上图的src文件上创建配置文件

      创建spring的配置文件applicationContext.xml

     

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/aop   
        http://www.springframework.org/schema/aop/spring-aop.xsd   
        http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans.xsd   
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context.xsd   
        http://www.springframework.org/schema/mvc   
        http://www.springframework.org/schema/mvc/spring-mvc.xsd   
        http://www.springframework.org/schema/tx   
        http://www.springframework.org/schema/tx/spring-tx.xsd">
	<!-- 扫描cn.fcw包下的所有class文件,配置注解的类全都装入容器中进行管理 -->
	<context:component-scan base-package="cn.fcw" />
	<context:annotation-config />
	<!-- 添加注解驱动 导入处理器适配器 和映射器 -->
	<mvc:annotation-driven conversion-service="conversionService"
		validator="validator" />
	<!--静态资源解析 -->
	<mvc:resources location="/js/" mapping="/js/**" />
	<mvc:resources location="/img/" mapping="/img/**" />
	<!-- 配置自定义参数绑定 -->
	<bean id="conversionService"
		class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<!-- 配置转换器 -->
		<property name="converters">
			<list>       <!-- 字符串转换为日期类型转换器(该位置可以配置多个转换器) -->
				 <bean class="cn.fcw.controller.converter.CustomDateConverter" />
				 <bean class="cn.fcw.controller.converter.SpringMVCFileConverter"/> 
			</list>
		</property>
	</bean>

	<!--配置校验器 -->
	<bean id="validator"
		class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
		<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
		<property name="validationMessageSource" ref="messageSource" />
	</bean>
	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:CustomValidationMessages" />
		<property name="fileEncodings" value="utf-8"></property>
		<property name="cacheSeconds" value="120"></property>
	</bean>

	<!-- 拦截器 多个拦截器 -->
	<mvc:interceptors>
		<bean class="cn.fcw.interceptor.GoodsInterceptor"></bean>
	</mvc:interceptors>

	<!--springmvc视图解析器 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

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

	<!-- 配置数据源 dbcp连接池 配置参数来自db.properties文件 -->
	<context:property-placeholder location="classpath:db.properties" />
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="${jdbc.driver}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<property name="maxActive" value="20" />
		<property name="maxIdle" value="5" />
	</bean>

	<!--sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 加载mybatis的全局配置文件 -->
		<property name="configLocation" value="classpath:SqlMapConfig.xml" />
		<!-- 数据库连接池 -->
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- mapper扫描器 相当于dao 通过mapper代理接口生成mapper的接口 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 扫描多个包的时候 用,中间使用逗号隔开 -->
		<property name="basePackage" value="cn.fcw.mapper"></property>
		<!--将sqlSessionFactory注入到mapper代理生成的实现类中,在service层调用mapper代理接口即可,用自动装配直接就生成其实现类的对象 -->
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		<!-- <property name="sqlSessionFactory" ref="sqlsfb"></property> -->
	</bean>
	
	
	<!--配置事务 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="insert*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<aop:advisor advice-ref="txAdvice" pointcut="execution(* cn.fcw.service.*.*(..))" />
	</aop:config>
</beans>

    创建mybatis的核心配置文件SqlMapConfig.xml

   

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration  
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!--配置别名 typeAliases和environments是平等级别的标签 type是实体类的完整类名 alias是类的别名 -->
	
	<typeAliases>
	   <!--  <package name="cn.fcw.pojo"/> -->
	  <typeAlias type="cn.fcw.pojo.GoodsCustom"  alias="goodsCustom"/>
	</typeAliases>

<!-- 	全部交给spring管理  <properties resource="db.properties">
	</properties>
	<typeAliases>
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments> -->
<!-- 
	<mappers>
		<mapper  resource="cn/fcw/mapper/GoodsMapper.xml"/>
	</mappers> -->
	
</configuration>  

    创建键值对存储文件db.propeties,其中数据库的名称和密码换成需要连接的数据库

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/ssh_db
jdbc.username=root
jdbc.password=999999

  创建log4j的配置文件log4j.properties

  

 ### \u8BBE\u7F6E###
log4j.rootLogger = info,stdout

### \u8F93\u51FA\u4FE1\u606F\u5230\u63A7\u5236\u62AC ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

#log4j.appender.my = MyAppender
#log4j.appender.my.account = cosco

log4j.appender.info = org.apache.log4j.FileAppender
log4j.appender.info.File = e:/logs/log.log
log4j.appender.info.Append = true
log4j.appender.info.Threshold = ERROR 
log4j.appender.info.layout = org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### \u8F93\u51FADEBUG \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = e:/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### \u8F93\u51FAERROR \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =e\:/logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss}  [ %t\:%r ] - [ %p ]  %m%n

    创建pojo实体类,并在mapper文件下写实体类所对应的mybatis映射文件

  

     实体类:

package cn.fcw.pojo;

import java.io.Serializable;

import javax.validation.constraints.Size;

import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
import org.springframework.lang.NonNull;

import com.sun.istack.internal.NotNull;

public class GoodsBean implements Serializable {
	private  int      gid;
	private  String   goods_img;
	@Size(min=2,max=4,message="{goods.goods_name.length}")
	private  String   goods_name;
	private  String   goods_desc;
	private  double   goods_price;
	public int getGid() {
		return gid;
	}
	public void setGid(int gid) {
		this.gid = gid;
	}
	public String getGoods_img() {
		return goods_img;
	}
	public void setGoods_img(String goods_img) {
		this.goods_img = goods_img;
	}
	public String getGoods_name() {
		return goods_name;
	}
	public void setGoods_name(String goods_name) {
		this.goods_name = goods_name;
	}
	public String getGoods_desc() {
		return goods_desc;
	}
	public void setGoods_desc(String goods_desc) {
		this.goods_desc = goods_desc;
	}
	public double getGoods_price() {
		return goods_price;
	}
	public void setGoods_price(double goods_price) {
		this.goods_price = goods_price;
	}
	@Override
	public String toString() {
		return "GoodsBean [gid=" + gid + ", goods_img=" + goods_img + ", goods_name=" + goods_name + ", goods_desc="
				+ goods_desc + ", goods_price=" + goods_price + "]";
	}
	

}

 GoodMpper.java

 

public interface GoodsMapper {
	public List<GoodsBean> findAllGoods() throws Exception;
	public List<GoodsBean> findGoodsByOrderNo(String  no) throws Exception;
	public GoodsBean findGoodsById(int  goods_id)  throws Exception;
	public  void updateGoodsByPojo(GoodsCustom  goodsCustom)  throws Exception;
}

  GoodsMapper.xml  映射文件中的sql便签的id必须和GoodsMpper.java里面的方法名一致

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
 <mapper  namespace="cn.fcw.mapper.GoodsMapper">  
     
     <!--select t_goods_order.g_id,t_goods.*  from t_goods_order inner join t_goods on t_goods_order.g_id=t_goods.gid and t_goods.order_no= 1509764797136;  -->
   
   <select id="findAllGoods" resultType="cn.fcw.pojo.GoodsBean">
       select  *  from t_goods
       
   </select>
   
   <select id="findGoodsByOrderNo" parameterType="java.lang.String" resultType="cn.fcw.pojo.GoodsBean">
    select t_goods_order.g_id,t_goods.*  from t_goods_order inner join t_goods on t_goods_order.g_id=t_goods.gid and t_goods_order.order_no= #{value}
   </select>
   
    <select id="findGoodsById"  parameterType="java.lang.Integer" resultType="cn.fcw.pojo.GoodsBean">
       select *  from t_goods where gid= #{value}
   </select>
   
    <update id="updateGoodsByPojo"  parameterType="goodsCustom">
        
        update t_goods gd set gd.goods_name=#{goods_name},gd.goods_img=#{goods_img},gd.goods_price=#{goods_price},gd.goods_desc=#{goods_desc} where gd.gid=#{gid}
        
    </update>

</mapper>  

  (3)创建service和controller

     service层:

      GoodsListService.java

public interface GoodsListService {
    public List<GoodsBean> findAllGoods() throws Exception;
    public List<GoodsBean> findGoodsByOrderNo(String vo) throws Exception;
    public GoodsCustom findGoodsById(Integer  goods_id)  throws Exception;
    public  void updateGoodsById(int  goods_id,GoodsCustom  goodsCustom)  throws Exception;
}
  GoodsListServiceImpl.java
  
@Service("goodsListService")
@Transactional
public class GoodsListServiceImpl  implements  GoodsListService{
	@Autowired
	@Qualifier("goodsMapper")
	private GoodsMapper  goodsMapper;
	@Override
	public List<GoodsBean> findGoodsByOrderNo(String vo) throws Exception {
		return  goodsMapper.findGoodsByOrderNo(vo);
	}
	
	@Override
	public  GoodsCustom findGoodsById(Integer goods_id) throws Exception {

		GoodsBean goodsBean = goodsMapper.findGoodsById(goods_id);
		GoodsCustom  goodsCustom=new GoodsCustom();
		BeanUtils.copyProperties(goodsBean, goodsCustom);
		return goodsCustom;
	}

	@Override
	public void updateGoodsById(int goods_id, GoodsCustom goodsCustom) throws Exception {
	      goodsCustom.setGid(goods_id);
	      goodsMapper.updateGoodsByPojo(goodsCustom);
	}

	@Override
	public List<GoodsBean> findAllGoods() throws Exception {
		return goodsMapper.findAllGoods();
	}
}

   controller层:

@Controller
@RequestMapping("/goods")
public class GetGoodsController {
	
	@Autowired
	private  GoodsListService  goodsListService;
	
	@RequestMapping(value="/getAllGoods",method={RequestMethod.GET})
	public String  findAllGoods(Model  model) {
		List<GoodsBean> goods=null;
		
		try {
			goods=goodsListService.findAllGoods();
			model.addAttribute("list",goods);
		} catch (Exception e) {
		
			e.printStackTrace();
		}
		
		return "allGoodsList";
		
	}
	
	
	@RequestMapping(value="/getAllGoodsList",method={RequestMethod.GET})
	@ResponseBody
	public String  findAllGoodsList() {
		 List<GoodsBean> goods=null;
		 Map<String, Object>  map=new HashMap<String, Object>();
		
		 ObjectMapper mapper = new ObjectMapper();
		 String  res=null;
		try {
			goods=goodsListService.findAllGoods();
			map.put("code",200 );
			map.put("data", goods);
			map.put("msg", "success");
			
	        JsonData jsonData=new JsonData();
	        jsonData.setCode(200);
	        jsonData.setData(goods);
	        jsonData.setMsg("success");
	        res= mapper.writeValueAsString(jsonData);
	        
			System.out.println("*******************android客户端是否请求了服务器***************"+res);
			
		} catch (Exception e) {
		    System.out.println(e.toString()+"****************************服务器抛出的异常");
			e.printStackTrace();
		}
		return res;
	}
	
	
	
	
	@RequestMapping("/getGoodsList")
	public ModelAndView   getList() {
		List<GoodsBean> goods=null;
		try {
			 goods = goodsListService.findGoodsByOrderNo("1509765066423");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		ModelAndView  modelAndView=new 	ModelAndView();
	    modelAndView.addObject("list", goods);
	    modelAndView.setViewName("goodsList");
		return modelAndView;
	}
	
	
	@RequestMapping(value="/jumpDetail")
	public String jumpGoodDetail() {
		
		return  "redirect:getGoodsDetail.action";
		
	}
	
	
	/**
	 * 通过method  限定请求方式 method
	 * @param (Model  model,@RequestParam (value="id",required=true) Integer goods_id)
	 * @return
	 */
	
	@RequestMapping(value="/getGoodsDetail",method={RequestMethod.POST,RequestMethod.GET})
	public String getGoodsDetail(Model  model,@RequestParam (value="id",required=true) Integer id) {
		GoodsBean goods = null;
		try {
			goods = goodsListService.findGoodsById(id);
		} catch (Exception e) {
			e.printStackTrace();
		}

		model.addAttribute("goods", goods);
		return "editGoods";	 //跳转到editGoods.jsp
	}
	
	
	/**
	 * 
	 * @ModelAttribute()设置回显
	 * 
	 * @Validated  有效性校验
	 * @param model  
	 * @param gid
	 * @param goodsCustom
	 * @param bindingResult
	 * ,@RequestParam 针对基本数据类型
	 * @return
	 */
	@RequestMapping(value="/editGoodsInfo",method={RequestMethod.POST})
	public  String editGoodsInfo(Model model,@RequestParam("gid") Integer  gid,@ModelAttribute("goods") @Validated GoodsCustom  goodsCustom,
			BindingResult  bindingResult,MultipartFile  uploadFile) {
		
		if(bindingResult.hasErrors()){
			List<ObjectError> allErrors = bindingResult.getAllErrors();
			for(ObjectError er:allErrors){
				System.out.println(er.getDefaultMessage()+"**********");
			}
			model.addAttribute("allErrors", allErrors);
			return "editGoods";
		}else{
			
			//上传图片
			if(uploadFile!=null){
				String  pic_path="E:/Eclipse/tomcat/temp/upload/";
				String originalFilename =uploadFile.getOriginalFilename();
				String  newFilePath=System.currentTimeMillis()+originalFilename.substring(originalFilename.lastIndexOf("."));
				File  file=new File(pic_path+newFilePath);
				try {
					uploadFile.transferTo(file);
					goodsCustom.setGoods_img(newFilePath);
				} catch (Exception e) {
					e.printStackTrace();
				} 
			}
			
			 try {
				goodsListService.updateGoodsById(gid, goodsCustom);
			} catch (Exception e) {
				e.printStackTrace();
			}
			  
			  return "redirect:getAllGoods.action";
		}
	
		
	}
	
	
	@RequestMapping(value="/uploadFiles",method={RequestMethod.POST})
	public  String uploadFile(Model model,HttpSession  session,MultipartFile[]  files)
	{	
		  // String realPath = session.getServletContext().getRealPath("/pic");
		    System.out.println("************************"+session.getServletContext().getRealPath("/pic")+"********************************");
			String realPath="E:/Eclipse/tomcat/temp/upload/";
			if(files!=null){
				for(int i=0;i<files.length;i++)
				{
					if(files[i]!=null)
					{
						String originalFilename = files[i].getOriginalFilename();
						String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
						String newFileName=System.currentTimeMillis()+ fileType;
						File  file=new File(realPath,newFileName);
						try {
							files[i].transferTo(file);
						} catch (IllegalStateException | IOException e) {
							e.printStackTrace();
						}
					}
					
				}
				
				model.addAttribute("success", "文件上传成功");
				return  "success";
			}else{
				model.addAttribute("error", "选择要上传的文件");
				return  "error";
			}
			
		}
	
	
	
	
	@RequestMapping(value="/downloadFile")
	public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException {
	    File file = new File("C:/Users/Administrator/Desktop/activity_shop_info.xml");
	    byte[] body = null;
	    InputStream is = new FileInputStream(file);
	    body = new byte[is.available()];
	    is.read(body);
	    HttpHeaders headers = new HttpHeaders();
	    headers.add("Content-Disposition", "attchement;filename=" + file.getName());
	    HttpStatus statusCode = HttpStatus.OK;
	    ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
	    return entity;
	}
}
	

  jsp文件goodslist.jsp

  

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib   uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link    rel="stylesheet" type="text/css" href="../css/bootstrap.css"/>
<script type="text/javascript" src="../js/jquery-3.2.1.js"></script>
<script type="text/javascript" src="../js/jquery.easyui.min.js"></script>

<style type="text/css"> 

    table{
      
      border-right: 1px  solid  gray;
      border-bottom: 1px  solid gray;
   
    }
     
     td{
       border-left:1px  solid  gray;
       border-top:1px  solid  gray;
       text-align: center;
       color: red;
     }
     img{
     width: 100px;
     height: 50px;
     }
     
     .update{
        color: blue;
        text-align: center;
     }
     
</style>

  <script type="text/javascript">
    $(function() {
    	
    	
  
	});
  </script>
  
<title>商品列表</title>
</head>
<body>

   <div>
     <table  class="b">
     <tr>
      <td>名称</td> 
      <td>价格</td> 
      <td>图片</td>
      <td>描述</td>
      <td></td>
      </tr>
     
    <c:forEach items="${list}"  var="item">
      <tr>
       <td>${item.goods_name}</td> 
       <td>${item.goods_price}</td>
       <td><img src="/pic/${item.goods_img}" alt="#"></td> 
        <td>${item.goods_desc}</td>
        <td  class="update"><a href="${pageContext.request.contextPath}/goods/getGoodsDetail.action?id=${item.gid}">修改</a></td>
     </tr>
    
    </c:forEach>
     </table>
  
   </div>
  
</body>
</html>

     (4)配置web程序入口web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>SpringMvcDemo</display-name>
	
	<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
   </context-param>
   <!-- 注册监听 项目一启动就加载配置文件 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
	<servlet>
		<servlet-name>SpringMvcDemo</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:applicationContext.xml</param-value>
		</init-param>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>SpringMvcDemo</servlet-name>
		<url-pattern>*.action</url-pattern>
	</servlet-mapping>
	
	 <filter>  
    <filter-name>encodingFilter</filter-name>  
    <filter-class>                      
            org.springframework.web.filter.CharacterEncodingFilter    
        </filter-class>  
    <init-param>  
      <param-name>encoding</param-name>  
      <param-value>UTF-8</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>/*</url-pattern><!-- 对所有文件过滤 -->  
  </filter-mapping> 
</web-app>

   (5)SpringMvcDemo工程下载地址

      http://download.csdn.net/download/fengchengwu2012/10263030

   


    

猜你喜欢

转载自blog.csdn.net/fengchengwu2012/article/details/79398749