spring+springmvc+myBatis+jquery+ajax+json的增删改查

来源:互联网 发布:webpack windows 编辑:程序博客网 时间:2024/05/17 06:52

src

cn.et.emp


cn.et.emp.controller

AjaxAction

[java] view plain copy
  1. package cn.et.emp.controller;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.OutputStream;  
  5. import java.io.UnsupportedEncodingException;  
  6.   
  7. import net.sf.json.JSONObject;  
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Controller;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.bind.annotation.ResponseBody;  
  13.   
  14. import cn.et.emp.entity.Emp;  
  15. import cn.et.emp.service.EmpService;  
  16. import cn.et.emp.utils.PageEntity;  
  17.   
  18. @Controller  
  19. public class AjaxAction {  
  20.   
  21.     @Autowired  
  22.     private EmpService service;  
  23.       
  24.     /** 
  25.      * ajax请求跳转是没有用的,所以返回字节数组 
  26.      *      表示将json转换为字节输出给响应流 
  27.      *   
  28.      *  @ResponseBody 这里修改了返回值,所以必须要加上这句代码 
  29.      * 这里没有返回值,使用分页 
  30.      * @return 
  31.      * @throws IOException  
  32.      */  
  33.     @RequestMapping(value="/ajaxQuery")  
  34.     public void ajaxQuery(String ename, String curPage, OutputStream os) throws IOException{  
  35.         int intCurPage = Integer.parseInt(curPage);  
  36.         PageEntity pe = service.query(ename,intCurPage);  
  37.         //将数组、对象或者集合转换成字符串的json 再传给xhr对象  
  38.         //把list集合转换成json字符串  
  39.         String json = JSONObject.fromObject(pe).toString();  
  40.         os.write(json.getBytes("UTF-8"));  
  41.     }  
  42.       
  43.     @RequestMapping("json")  
  44.     public void action(String ename,OutputStream os) throws UnsupportedEncodingException, IOException{  
  45.         os.write("SMITH".toString().getBytes("UTF-8"));  
  46.     }  
  47.       
  48.       
  49.     /** 
  50.      * 新增 
  51.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  52.      * @param ename 
  53.      * @param sal 
  54.      * @param os 
  55.      * @throws IOException  
  56.      */  
  57.     @RequestMapping(value="/ajaxAdd")  
  58.     public void ajaxAdd(String ename,String sal,OutputStream os) throws IOException{  
  59.         try {  
  60.             service.add(ename, sal);  
  61.             os.write("1".getBytes("UTF-8"));  
  62.         } catch (Exception e) {  
  63.             os.write("0".getBytes("UTF-8"));  
  64.         }  
  65.     }  
  66.       
  67.     /** 
  68.      * 删除 
  69.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  70.      * @throws IOException  
  71.      */  
  72.     @RequestMapping(value="/ajaxDelete")  
  73.     public void ajaxDelete(String eno,OutputStream os) throws IOException{  
  74.         try {  
  75.             service.delete(eno);  
  76.             os.write("1".getBytes("UTF-8"));  
  77.         } catch (Exception e) {  
  78.             os.write("0".getBytes("UTF-8"));  
  79.         }  
  80.     }  
  81.       
  82.   
  83.     /** 
  84.      * 修改 
  85.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  86.      * @throws IOException  
  87.      */  
  88.     @RequestMapping(value="/ajaxUpdate")  
  89.     public void ajaxUpdate(Emp emp,OutputStream os) throws IOException{  
  90.         try {  
  91.             service.update(emp);  
  92.             os.write("1".getBytes("UTF-8"));  
  93.         } catch (Exception e) {  
  94.             os.write("0".getBytes("UTF-8"));  
  95.         }  
  96.     }  
  97.       
  98.     /** 
  99.      * 需要配置org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 
  100.      *  才可以直接返回其它对象 
  101.      * @param ename 
  102.      * @param curPage 
  103.      * @return 
  104.      * @throws IOException 
  105.      */  
  106.     @ResponseBody  
  107.     @RequestMapping(value="/ajaxQuery2")  
  108.     public PageEntity ajaxQuery(String ename, String curPage) throws IOException{  
  109.         int intCurPage = Integer.parseInt(curPage);  
  110.         PageEntity pe = service.query(ename,intCurPage);  
  111.         //将数组、对象或者集合转换成字符串的json 再传给xhr对象  
  112.         //把list集合转换成json字符串  
  113.         return pe;  
  114.     }  
  115.       
  116. }  


cn.et.emp.entity

Emp

[java] view plain copy
  1. package cn.et.emp.controller;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.OutputStream;  
  5. import java.io.UnsupportedEncodingException;  
  6.   
  7. import net.sf.json.JSONObject;  
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Controller;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.bind.annotation.ResponseBody;  
  13.   
  14. import cn.et.emp.entity.Emp;  
  15. import cn.et.emp.service.EmpService;  
  16. import cn.et.emp.utils.PageEntity;  
  17.   
  18. @Controller  
  19. public class AjaxAction {  
  20.   
  21.     @Autowired  
  22.     private EmpService service;  
  23.       
  24.     /** 
  25.      * ajax请求跳转是没有用的,所以返回字节数组 
  26.      *      表示将json转换为字节输出给响应流 
  27.      *   
  28.      *  @ResponseBody 这里修改了返回值,所以必须要加上这句代码 
  29.      * 这里没有返回值,使用分页 
  30.      * @return 
  31.      * @throws IOException  
  32.      */  
  33.     @RequestMapping(value="/ajaxQuery")  
  34.     public void ajaxQuery(String ename, String curPage, OutputStream os) throws IOException{  
  35.         int intCurPage = Integer.parseInt(curPage);  
  36.         PageEntity pe = service.query(ename,intCurPage);  
  37.         //将数组、对象或者集合转换成字符串的json 再传给xhr对象  
  38.         //把list集合转换成json字符串  
  39.         String json = JSONObject.fromObject(pe).toString();  
  40.         os.write(json.getBytes("UTF-8"));  
  41.     }  
  42.       
  43.     @RequestMapping("json")  
  44.     public void action(String ename,OutputStream os) throws UnsupportedEncodingException, IOException{  
  45.         os.write("SMITH".toString().getBytes("UTF-8"));  
  46.     }  
  47.       
  48.       
  49.     /** 
  50.      * 新增 
  51.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  52.      * @param ename 
  53.      * @param sal 
  54.      * @param os 
  55.      * @throws IOException  
  56.      */  
  57.     @RequestMapping(value="/ajaxAdd")  
  58.     public void ajaxAdd(String ename,String sal,OutputStream os) throws IOException{  
  59.         try {  
  60.             service.add(ename, sal);  
  61.             os.write("1".getBytes("UTF-8"));  
  62.         } catch (Exception e) {  
  63.             os.write("0".getBytes("UTF-8"));  
  64.         }  
  65.     }  
  66.       
  67.     /** 
  68.      * 删除 
  69.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  70.      * @throws IOException  
  71.      */  
  72.     @RequestMapping(value="/ajaxDelete")  
  73.     public void ajaxDelete(String eno,OutputStream os) throws IOException{  
  74.         try {  
  75.             service.delete(eno);  
  76.             os.write("1".getBytes("UTF-8"));  
  77.         } catch (Exception e) {  
  78.             os.write("0".getBytes("UTF-8"));  
  79.         }  
  80.     }  
  81.       
  82.   
  83.     /** 
  84.      * 修改 
  85.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  86.      * @throws IOException  
  87.      */  
  88.     @RequestMapping(value="/ajaxUpdate")  
  89.     public void ajaxUpdate(Emp emp,OutputStream os) throws IOException{  
  90.         try {  
  91.             service.update(emp);  
  92.             os.write("1".getBytes("UTF-8"));  
  93.         } catch (Exception e) {  
  94.             os.write("0".getBytes("UTF-8"));  
  95.         }  
  96.     }  
  97.       
  98.     /** 
  99.      * 需要配置org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 
  100.      *  才可以直接返回其它对象 
  101.      * @param ename 
  102.      * @param curPage 
  103.      * @return 
  104.      * @throws IOException 
  105.      */  
  106.     @ResponseBody  
  107.     @RequestMapping(value="/ajaxQuery2")  
  108.     public PageEntity ajaxQuery(String ename, String curPage) throws IOException{  
  109.         int intCurPage = Integer.parseInt(curPage);  
  110.         PageEntity pe = service.query(ename,intCurPage);  
  111.         //将数组、对象或者集合转换成字符串的json 再传给xhr对象  
  112.         //把list集合转换成json字符串  
  113.         return pe;  
  114.     }  
  115.       
  116. }  


cn.et.emp.mapper

EmpMapper

[java] view plain copy
  1. package cn.et.emp.controller;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.OutputStream;  
  5. import java.io.UnsupportedEncodingException;  
  6.   
  7. import net.sf.json.JSONObject;  
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Controller;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.bind.annotation.ResponseBody;  
  13.   
  14. import cn.et.emp.entity.Emp;  
  15. import cn.et.emp.service.EmpService;  
  16. import cn.et.emp.utils.PageEntity;  
  17.   
  18. @Controller  
  19. public class AjaxAction {  
  20.   
  21.     @Autowired  
  22.     private EmpService service;  
  23.       
  24.     /** 
  25.      * ajax请求跳转是没有用的,所以返回字节数组 
  26.      *      表示将json转换为字节输出给响应流 
  27.      *   
  28.      *  @ResponseBody 这里修改了返回值,所以必须要加上这句代码 
  29.      * 这里没有返回值,使用分页 
  30.      * @return 
  31.      * @throws IOException  
  32.      */  
  33.     @RequestMapping(value="/ajaxQuery")  
  34.     public void ajaxQuery(String ename, String curPage, OutputStream os) throws IOException{  
  35.         int intCurPage = Integer.parseInt(curPage);  
  36.         PageEntity pe = service.query(ename,intCurPage);  
  37.         //将数组、对象或者集合转换成字符串的json 再传给xhr对象  
  38.         //把list集合转换成json字符串  
  39.         String json = JSONObject.fromObject(pe).toString();  
  40.         os.write(json.getBytes("UTF-8"));  
  41.     }  
  42.       
  43.     @RequestMapping("json")  
  44.     public void action(String ename,OutputStream os) throws UnsupportedEncodingException, IOException{  
  45.         os.write("SMITH".toString().getBytes("UTF-8"));  
  46.     }  
  47.       
  48.       
  49.     /** 
  50.      * 新增 
  51.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  52.      * @param ename 
  53.      * @param sal 
  54.      * @param os 
  55.      * @throws IOException  
  56.      */  
  57.     @RequestMapping(value="/ajaxAdd")  
  58.     public void ajaxAdd(String ename,String sal,OutputStream os) throws IOException{  
  59.         try {  
  60.             service.add(ename, sal);  
  61.             os.write("1".getBytes("UTF-8"));  
  62.         } catch (Exception e) {  
  63.             os.write("0".getBytes("UTF-8"));  
  64.         }  
  65.     }  
  66.       
  67.     /** 
  68.      * 删除 
  69.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  70.      * @throws IOException  
  71.      */  
  72.     @RequestMapping(value="/ajaxDelete")  
  73.     public void ajaxDelete(String eno,OutputStream os) throws IOException{  
  74.         try {  
  75.             service.delete(eno);  
  76.             os.write("1".getBytes("UTF-8"));  
  77.         } catch (Exception e) {  
  78.             os.write("0".getBytes("UTF-8"));  
  79.         }  
  80.     }  
  81.       
  82.   
  83.     /** 
  84.      * 修改 
  85.      * 如果返回值为void,那么形参必须配上OutputStream os不然会报错的 
  86.      * @throws IOException  
  87.      */  
  88.     @RequestMapping(value="/ajaxUpdate")  
  89.     public void ajaxUpdate(Emp emp,OutputStream os) throws IOException{  
  90.         try {  
  91.             service.update(emp);  
  92.             os.write("1".getBytes("UTF-8"));  
  93.         } catch (Exception e) {  
  94.             os.write("0".getBytes("UTF-8"));  
  95.         }  
  96.     }  
  97.       
  98.     /** 
  99.      * 需要配置org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 
  100.      *  才可以直接返回其它对象 
  101.      * @param ename 
  102.      * @param curPage 
  103.      * @return 
  104.      * @throws IOException 
  105.      */  
  106.     @ResponseBody  
  107.     @RequestMapping(value="/ajaxQuery2")  
  108.     public PageEntity ajaxQuery(String ename, String curPage) throws IOException{  
  109.         int intCurPage = Integer.parseInt(curPage);  
  110.         PageEntity pe = service.query(ename,intCurPage);  
  111.         //将数组、对象或者集合转换成字符串的json 再传给xhr对象  
  112.         //把list集合转换成json字符串  
  113.         return pe;  
  114.     }  
  115.       
  116. }  


EmpMapper.xml

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper  
  3.   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  5.     
  6. <!--   
  7.     接口映射  
  8.     namespace必需跟接口的全名一致  
  9.  -->  
  10. <mapper namespace="cn.et.emp.mapper.EmpMapper">  
  11.     <!--   
  12.         select的id必须和接口的方法名一致  
  13.         resultType和接口返回值的泛型一致  
  14.         没有返回值就不写  
  15.           
  16.         #{}语法格式是(实际上是使用jdbc的?点位符传参是安全的 )  
  17.             第一种#{0}  
  18.             第二种#{param1}  
  19.             第三种指定别名#{}  
  20.               
  21.         ${}是字符串拼接,拼接字符串的话要添加''   是不安全的  
  22.           
  23.         查询总一共有多少符合条件的数据  
  24.      -->  
  25.     <select id="queryCount" resultType="java.util.Map">  
  26.         select count(rowid) as TC from emp2 where  ename like #{ename}  
  27.     </select>  
  28.       
  29.     <!-- 通过用户名查询 -->  
  30.     <select id="query" resultType="java.util.Map">  
  31.         select * from emp2 where ename like #{ename} order by eno desc  
  32.     </select>  
  33.       
  34.     <!-- 查询当前页的数据  -->  
  35.     <select id="queryPage" resultType="java.util.Map">  
  36.     select * from   
  37.     (select e.*,rownum rn from (select * from emp2 where ename like #{ename} order by eno desc) e)  
  38.      where rn between #{start} and #{end} order by eno desc  
  39.     </select>  
  40.       
  41.     <!-- 新增 -->  
  42.     <insert id="add">  
  43.         insert into emp2 values((select nvl(max(eno),0)+1 from emp2),#{ename},#{sal})  
  44.     </insert>  
  45.       
  46.     <!-- 删除 -->  
  47.     <delete id="delete">  
  48.         delete from emp2 where eno=#{eno}  
  49.     </delete>  
  50.       
  51.     <!-- 修改 -->  
  52.     <update id="update">  
  53.         update emp2 set ename=#{ename},sal=#{sal} where eno=#{eno}  
  54.     </update>  
  55. </mapper>  


cn.et.emp.service

EmpService

[java] view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper  
  3.   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  5.     
  6. <!--   
  7.     接口映射  
  8.     namespace必需跟接口的全名一致  
  9.  -->  
  10. <mapper namespace="cn.et.emp.mapper.EmpMapper">  
  11.     <!--   
  12.         select的id必须和接口的方法名一致  
  13.         resultType和接口返回值的泛型一致  
  14.         没有返回值就不写  
  15.           
  16.         #{}语法格式是(实际上是使用jdbc的?点位符传参是安全的 )  
  17.             第一种#{0}  
  18.             第二种#{param1}  
  19.             第三种指定别名#{}  
  20.               
  21.         ${}是字符串拼接,拼接字符串的话要添加''   是不安全的  
  22.           
  23.         查询总一共有多少符合条件的数据  
  24.      -->  
  25.     <select id="queryCount" resultType="java.util.Map">  
  26.         select count(rowid) as TC from emp2 where  ename like #{ename}  
  27.     </select>  
  28.       
  29.     <!-- 通过用户名查询 -->  
  30.     <select id="query" resultType="java.util.Map">  
  31.         select * from emp2 where ename like #{ename} order by eno desc  
  32.     </select>  
  33.       
  34.     <!-- 查询当前页的数据  -->  
  35.     <select id="queryPage" resultType="java.util.Map">  
  36.     select * from   
  37.     (select e.*,rownum rn from (select * from emp2 where ename like #{ename} order by eno desc) e)  
  38.      where rn between #{start} and #{end} order by eno desc  
  39.     </select>  
  40.       
  41.     <!-- 新增 -->  
  42.     <insert id="add">  
  43.         insert into emp2 values((select nvl(max(eno),0)+1 from emp2),#{ename},#{sal})  
  44.     </insert>  
  45.       
  46.     <!-- 删除 -->  
  47.     <delete id="delete">  
  48.         delete from emp2 where eno=#{eno}  
  49.     </delete>  
  50.       
  51.     <!-- 修改 -->  
  52.     <update id="update">  
  53.         update emp2 set ename=#{ename},sal=#{sal} where eno=#{eno}  
  54.     </update>  
  55. </mapper>  


cn.et.emp.service.impl

EmpServiceImpl

[java] view plain copy
  1. package cn.et.emp.service.impl;  
  2.   
  3. import java.math.BigDecimal;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import org.springframework.beans.factory.annotation.Autowired;  
  8. import org.springframework.stereotype.Service;  
  9.   
  10. import cn.et.emp.entity.Emp;  
  11. import cn.et.emp.mapper.EmpMapper;  
  12. import cn.et.emp.service.EmpService;  
  13. import cn.et.emp.utils.PageEntity;  
  14. import cn.et.emp.utils.PageUtils;  
  15.   
  16.   
  17. /** 
  18.  * 服务层掉用dao层的方法  
  19.  * @author Administrator 
  20.  * 
  21.  */  
  22. @Service  
  23. public class EmpServiceImpl implements EmpService {  
  24.   
  25.     //自动装配  
  26.     @Autowired  
  27.     private EmpMapper mapper;  
  28.       
  29.       
  30.     /* 查询 
  31.      * @see cn.et.emp.dao.impl.EmpDao#query(java.lang.String) 
  32.      */  
  33.     public PageEntity query(String ename,int curPage){  
  34.         if(ename==null){  
  35.             ename="";  
  36.         }  
  37.         //获取到总条数  
  38.         Map map = mapper.queryCount("%"+ename+"%");  
  39.         String total = map.get("TC").toString();  
  40.         int intTotal = Integer.parseInt(total);  
  41.         //再创建PageEntity实体类把当前页,每页显示多少条数据和总共多少条数据传进去  
  42.         PageEntity pe = PageUtils.calc(curPage, 10, intTotal);  
  43.         List list = mapper.queryPage("%"+ename+"%", pe.getStartIndex(), pe.getEndIndex());  
  44.         pe.setData(list);  
  45.         return pe;  
  46.     }  
  47.       
  48.     /* 新增 
  49.      * @see cn.et.emp.mapper.impl.EmpDao#add(java.lang.String, java.lang.String) 
  50.      */  
  51.     public void add(String ename,String sal){  
  52.         if(ename==null){  
  53.             ename="";  
  54.         }  
  55.         mapper.add(ename, sal);  
  56.     }  
  57.       
  58.     /* 删除 
  59.      * @see cn.et.emp.mapper.impl.EmpDao#delete(java.lang.String) 
  60.      */  
  61.     public void delete(String eno){  
  62.         mapper.delete(eno);  
  63.     }  
  64.       
  65.     /* 修改 
  66.      * @see cn.et.emp.mapper.impl.EmpDao#update(en.et.emp.entity.Emp) 
  67.      */  
  68.     public void update(Emp emp){  
  69.         mapper.update(emp.getEno(),emp.getEname(),emp.getSal());  
  70.     }  
  71.   
  72.     public PageEntity query(String ename) {  
  73.         // TODO Auto-generated method stub  
  74.         return null;  
  75.     }  
  76.       
  77. }  


cn.et.emp.utils

PageEntity

[java] view plain copy
  1. package cn.et.emp.utils;  
  2.   
  3. import java.util.List;  
  4.   
  5. public class PageEntity {  
  6.       
  7.     /** 
  8.      * 数据库查询的总条数 
  9.      */  
  10.     private int totalSize;  
  11.       
  12.     /** 
  13.      * 每页显示的条数 
  14.      */  
  15.     private int pageSize=10;  
  16.       
  17.     /** 
  18.      * 总页数 
  19.      *  
  20.      * totalSize=20 pageSize=10 
  21.      * 最后公式:pageCount=(totalSize%pageSize==0?totalSize/pageSize:(totalSize/pageSize+1)) 
  22.      */  
  23.     private int pageCount;  
  24.       
  25.     /** 
  26.      * 当前页 
  27.      */  
  28.     private int curPage;  
  29.       
  30.     /** 
  31.      * 上一页 
  32.      * prevPage=curPage==1?curPage:curPage-1 
  33.      */  
  34.     private int prevPage;  
  35.       
  36.     /** 
  37.      * 下一页 
  38.      * 最后公式:nextPage=curPage<pageCount?curPage+1:curPage; 
  39.      */  
  40.     private int nextPage;  
  41.       
  42.       
  43.     /** 
  44.      *  
  45.      * startIndex=(curPage-1)*pageSize+1 
  46.      * endIndex=curPage*pageSize 
  47.      */  
  48.     private int startIndex;  
  49.       
  50.     private int endIndex;  
  51.       
  52.     private List data;  
  53.       
  54.     private String queryName;  
  55.       
  56.     public String getQueryName() {  
  57.         return queryName;  
  58.     }  
  59.   
  60.     public void setQueryName(String queryName) {  
  61.         this.queryName = queryName;  
  62.     }  
  63.   
  64.     public int getTotalSize() {  
  65.         return totalSize;  
  66.     }  
  67.   
  68.     public void setTotalSize(int totalSize) {  
  69.         this.totalSize = totalSize;  
  70.     }  
  71.   
  72.     public int getPageSize() {  
  73.         return pageSize;  
  74.     }  
  75.   
  76.     public void setPageSize(int pageSize) {  
  77.         this.pageSize = pageSize;  
  78.     }  
  79.   
  80.     public int getPageCount() {  
  81.         return pageCount;  
  82.     }  
  83.   
  84.     public void setPageCount(int pageCount) {  
  85.         this.pageCount = pageCount;  
  86.     }  
  87.   
  88.     public int getCurPage() {  
  89.         return curPage;  
  90.     }  
  91.   
  92.     public void setCurPage(int curPage) {  
  93.         this.curPage = curPage;  
  94.     }  
  95.   
  96.     public int getPrevPage() {  
  97.         return prevPage;  
  98.     }  
  99.   
  100.     public void setPrevPage(int prevPage) {  
  101.         this.prevPage = prevPage;  
  102.     }  
  103.   
  104.     public int getNextPage() {  
  105.         return nextPage;  
  106.     }  
  107.   
  108.     public void setNextPage(int nextPage) {  
  109.         this.nextPage = nextPage;  
  110.     }  
  111.   
  112.     public int getStartIndex() {  
  113.         return startIndex;  
  114.     }  
  115.   
  116.     public void setStartIndex(int startIndex) {  
  117.         this.startIndex = startIndex;  
  118.     }  
  119.   
  120.     public int getEndIndex() {  
  121.         return endIndex;  
  122.     }  
  123.   
  124.     public void setEndIndex(int endIndex) {  
  125.         this.endIndex = endIndex;  
  126.     }  
  127.   
  128.     public List getData() {  
  129.         return data;  
  130.     }  
  131.   
  132.     public void setData(List data) {  
  133.         this.data = data;  
  134.     }  
  135.       
  136.       
  137.       
  138. }  


PageUtils

[java] view plain copy
  1. package cn.et.emp.utils;  
  2.   
  3. public class PageUtils {  
  4.   
  5.     /** 
  6.      * 计算上一页、下一页等... 
  7.      * @param curPage   当前页 
  8.      * @param pageSize  每页显示的条数 
  9.      * @param totalSize 数据库查询的总条数 
  10.      * @return 
  11.      */  
  12.      public static PageEntity calc(int curPage, int pageSize, int totalSize){  
  13.          PageEntity pe = new PageEntity();  
  14.          pe.setCurPage(curPage);  
  15.          pe.setPageSize(pageSize);  
  16.          pe.setTotalSize(totalSize);  
  17.          int pageCount=(totalSize%pageSize==0?totalSize/pageSize:(totalSize/pageSize+1));  
  18.          int prevPage=curPage==1?curPage:curPage-1;  
  19.          int nextPage=curPage<pageCount?curPage+1:curPage;  
  20.          int startIndex=(curPage-1)*pageSize+1;  
  21.          int endIndex=curPage*pageSize;  
  22.            
  23.          pe.setPageCount(pageCount);  
  24.          pe.setPrevPage(prevPage);  
  25.          pe.setNextPage(nextPage);  
  26.          pe.setStartIndex(startIndex);  
  27.          pe.setEndIndex(endIndex);  
  28.          return pe;  
  29.      }  
  30. }  


jdbc.properties

[plain] view plain copy
  1. url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl  
  2. driverClass=oracle.jdbc.OracleDriver  
  3. account=scott  
  4. password=tiger  


log4j.properties

[plain] view plain copy
  1. log4j.rootLogger=debug, ServerDailyRollingFile, stdout   
  2. log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender   
  3. log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd   
  4. log4j.appender.ServerDailyRollingFile.File=C\://logs/notify-subscription.log   
  5. log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout   
  6. log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n   
  7. log4j.appender.ServerDailyRollingFile.Append=true  
  8.   
  9. log4j.appender.stdout=org.apache.log4j.ConsoleAppender   
  10. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   
  11. log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n  


spring.xml

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.   
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd  
  8.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd  
  9.         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd  
  10.         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd  
  11.         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd  
  12.         ">  
  13.       
  14.     <!-- springmvc的配置只能扫描控制层  spring配置文件不能扫描控制层 -->  
  15.     <context:component-scan base-package="cn.et">  
  16.         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>  
  17.     </context:component-scan>  
  18.       
  19.     <!-- 读取jdbc.properties文件 -->  
  20.     <context:property-placeholder   
  21.     location="classpath:/cn/et/emp/utils/jdbc.properties" />  
  22.       
  23.     <!-- 数据库连接池 -->  
  24.     <bean id="dataSource"  
  25.         class="org.apache.commons.dbcp.BasicDataSource">  
  26.         <property name="url" value="${url}"></property>  
  27.         <property name="driverClassName" value="${driverClass}"></property>  
  28.         <property name="username" value="${account}"></property>  
  29.         <property name="password" value="${password}"></property>  
  30.         <!--   
  31.             initialSize   10  
  32.             默认生成10个连接,那么要用到连接的时候就直接拿一条出来用就可以了,  
  33.             就不用等到用的时候再去产生连接  
  34.          -->  
  35.         <property name="initialSize" value="10"></property>  
  36.         <!-- 发起一条测试的sql语句去连接一下数据库,看是否可以正常连接数据库 -->  
  37.     </bean>  
  38.       
  39.     <!-- 创建一个jdbc模板SqlSessionFactoryBean -->  
  40.     <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  41.         <property name="dataSource" ref="dataSource"></property>  
  42.     </bean>  
  43.       
  44.     <!-- 这里一定要用sqlSessionFactoryBeanName,不然加载不了driverClass -->  
  45.     <!-- 扫描接口映射和注解和xml文件 -->  
  46.     <bean id="scanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  47.         <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>  
  48.         <!--   
  49.             如果映射的是Mapper接口直接放到mapper包里面扫描就发好了  
  50.             如果映射的是xml配置文件需要把配置文件名改成对应的接口一样的名称,并都要放到mapper包下  
  51.          -->  
  52.         <property name="basePackage" value="cn.*..*.mapper"></property>  
  53.     </bean>  
  54.       
  55.     <!-- 事务管理器 spring帮助我们控制事务 -->  
  56.     <bean id="transManager"  
  57.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  58.         <property name="dataSource" ref="dataSource"></property>  
  59.     </bean>  
  60.   
  61.     <!-- aspectjweaver 事务架包 -->  
  62.     <!-- 当切点拦截到某个操作的方法  发送通知给tx定义的通知管理  调用事务管理器 提交和回滚 -->  
  63.     <tx:advice id="myAdvice" transaction-manager="transManager">  
  64.         <tx:attributes>  
  65.             <!-- 默认的配置 -->  
  66.             <tx:method name="add*" propagation="REQUIRED" />  
  67.             <tx:method name="query*" propagation="REQUIRED" />  
  68.             <tx:method name="update*" propagation="REQUIRED" />  
  69.             <!-- *代表了除了上面配置的方法都不使用事务 -->  
  70.             <tx:method name="*" read-only="true" />  
  71.         </tx:attributes>  
  72.     </tx:advice>  
  73.   
  74.     <!-- 切面 -->  
  75.     <aop:config>  
  76.         <aop:pointcut id="myPointCut" expression="execution(* cn.*..*.service.EmpService.*(..))" />  
  77.         <aop:advisor advice-ref="myAdvice" pointcut-ref="myPointCut" />  
  78.     </aop:config>  
  79. </beans>  


form.jsp

[html] view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <script type="text/javascript" src="jquery-2.2.4.js"></script>  
  6.     <script type="text/javascript">  
  7.       
  8.         //当前页  
  9.         var curPage=0;  
  10.         //上一页  
  11.         var prevPage=0;  
  12.         //下一页  
  13.         var nextPage=0;  
  14.         //总页数  
  15.         var pageCount=0;  
  16.         //总条数  
  17.         var totalSize=0;  
  18.           
  19.       
  20.           
  21.         //查询方法  
  22.         function query(curP){  
  23.             var ename=$("#qename").val();  
  24.             //声明一个XMLHttpRequest变量并用兼容性的方法创建对象  
  25.               
  26.             $.ajax({  
  27.                     url:"${pageContext.request.contextPath}/ajaxQuery", //  表示请求的路径  
  28.                     dataType:"json",    // 表示响应的数据类型 json的方式传参  
  29.                     data:{ename:ename,curPage:curP},    //  ajax的传参  
  30.                     success:function(pe){  
  31.                         //读取pe里的页信息  
  32.                         curPage=pe.curPage;  
  33.                         prevPage=pe.prevPage;  
  34.                         nextPage=pe.nextPage;  
  35.                         pageCount=pe.pageCount;  
  36.                         totalSize=pe.totalSize;  
  37.                           
  38.                         $("#curPage").text(curPage);  
  39.                         $("#pageCount").text(pageCount);  
  40.                         $("#totalSize").text(totalSize);  
  41.                           
  42.                         //获取到list集合  
  43.                         var oJson = pe.data;  
  44.                           
  45.                         //首先获取取table的dom对象  
  46.                         $("tr[mark='delete']").remove();  
  47.                       
  48.                         for(var i=0; i<oJson.length; i++){  
  49.                             $("#tbody").append("<tr mark='delete'><td>"+oJson[i].ENO+"</td><td>"+oJson[i].ENAME+"</td><td>"+oJson[i].SAL  
  50.                             +"</td><td><button onclick=openUpdate("+oJson[i].ENO+",'"+oJson[i].ENAME+"',"+oJson[i].SAL  
  51.                             +")>修改</button><button onclick='del("+oJson[i].ENO+")'>删除</button></td>");  
  52.                         }  
  53.                           
  54.                     },  
  55.                     /*异常的处理*/  
  56.                     error:function(XMLHttpRequest, textStatus, errorThrown){  
  57.                         alert("调用服务器失败--"+XMLHttpRequest.status+"--"+errorThrown);  
  58.                     }  
  59.                 });  
  60.           
  61.             }  
  62.           
  63.             //新增方法  
  64.             function add(){  
  65.                 var url="${pageContext.request.contextPath}/ajaxAdd";  
  66.                 var param=$("#AddDivForm").serialize();  
  67.                 ajaxSend(url,param,function(text){  
  68.                     if(text==1){  
  69.                         //alert("新增成功");  
  70.                         $("#AddDivForm").find("input").val("");  
  71.                         $("#addDiv").hide();  
  72.                         query(curPage);  
  73.                     }else{  
  74.                         alert("新增失败");  
  75.                     }  
  76.                 });  
  77.             }  
  78.               
  79.             //删除方法  
  80.             function del(eno){  
  81.                 var url="${pageContext.request.contextPath}/ajaxDelete";  
  82.                 var param="eno="+eno;  
  83.                 ajaxSend(url,param,function(text){  
  84.                     if(text==1){  
  85.                         //alert("删除成功");  
  86.                         query(curPage);  
  87.                     }else{  
  88.                         alert("删除失败");  
  89.                     }  
  90.                 });  
  91.             }  
  92.               
  93.             //打开修改DIV  
  94.            function openUpdate(eno, ename, sal){  
  95.               $('#updateDiv').show();  
  96.               $('#upate_eno').val(eno);  
  97.               $('#upate_ename').val(ename);  
  98.               $('#upate_sal').val(sal);  
  99.            }  
  100.              
  101.              //修改方法  
  102.             function toUpdate(){  
  103.                 var url="${pageContext.request.contextPath}/ajaxUpdate";  
  104.                 var param=$("#updateDivForm").serialize();  
  105.                   
  106.                 ajaxSend(url,param,function(text){  
  107.                     if(text==1){  
  108.                         //alert("修改成功");  
  109.                         $('#updateDiv').hide();  
  110.                         $("#updateDivForm").find("input").val("");  
  111.                         query(curPage);  
  112.                     }else{  
  113.                         alert("修改失败");  
  114.                     }  
  115.                 });  
  116.             }  
  117.               
  118.             //ajax请求  
  119.             function ajaxSend(url,param,callback){  
  120.                 $.ajax({  
  121.                         url:url+"?",    //  表示请求的路径  
  122.                         data:param,  
  123.                         dataType:"json",    // 表示响应的数据类型 json的方式传参  
  124.                         success:callback,  
  125.                         /*异常的处理*/  
  126.                         error:function(XMLHttpRequest, textStatus, errorThrown){  
  127.                             alert("调用服务器失败--"+XMLHttpRequest.status+"--"+errorThrown);  
  128.                         }  
  129.                     });  
  130.             }  
  131.     </script>  
  132.   </head>  
  133.   <body onload="query(1)">  
  134.     <form>  
  135.         <input type="text" id="qename" />  
  136.         <input type="button" value="查询" onclick="query(curPage)"  />  
  137.         <input type='button' value='新增' onclick='$("#addDiv").show()'>   
  138.     </form>     
  139.     <table border="1" cellpadding="10" cellspacing="0">  
  140.         <thead>  
  141.             <tr>  
  142.                 <td>编号</td>  
  143.                 <td>姓名</td>  
  144.                 <td>薪水</td>  
  145.                 <td>操作</td>  
  146.             </tr>  
  147.         </thead>  
  148.         <tbody id="tbody">  
  149.           
  150.         </tbody>  
  151.     </table>  
  152.       
  153.     <input type="image" src="${pageContext.request.contextPath}/task/image/1.gif" onclick="query(1)"/>  
  154.     <input type="image" src="${pageContext.request.contextPath}/task/image/2.gif" onclick="query(prevPage)"/>  
  155.     当前<span id="curPage"></span>页 共<span id="pageCount"></span>页 共<span id="totalSize"></span>条  
  156.     <input type="image" src="${pageContext.request.contextPath}/task/image/3.gif" onclick="query(nextPage)"/>  
  157.     <input type="image" src="${pageContext.request.contextPath}/task/image/4.gif" onclick="query(pageCount)"/>  
  158.     
  159.           
  160.        <!-- 修改的div -->  
  161.     <div id="updateDiv" style="display:none;position: absolute;left: 35%;top: 40%;width: 300px;height:100px;background:linear-gradient(to bottom,skyblue,gray);border: 1px solid black;">  
  162.             <form id="updateDivForm">  
  163.                <input id="upate_eno" type='hidden' />        
  164.                ENAME: <input id="upate_ename" name="name" type='text'><Br/>  
  165.                SAL:       <input id="upate_sal" name="sal" type='text' name='sal'><Br/>  
  166.             </form>   
  167.         <input type='button' value='保存' onclick=toUpdate() />  
  168.         <input type='button' value="关闭" onclick="document.getElementById('updateDiv').style.display='none'" />  
  169.           
  170.     </div>  
  171.       
  172.     <!-- 新增的div -->  
  173.     <div id="addDiv" style="display:none;position: absolute;left: 35%;top: 40%;width: 300px;height:100px;background:linear-gradient(to bottom,skyblue,gray);border: 1px solid black;">  
  174.         <form id="AddDivForm">  
  175.             ENAME:<input type='text' id='addEname' name="ename"><br/>  
  176.               SAL:      <input type='text' id='addSal' name="sal"><br/>  
  177.         </form>  
  178.     <button onclick="add()">增加</button>  
  179.     <input type='button' value="关闭" onclick="document.getElementById('addDiv').style.display='none'">  
  180.     </div>  
  181.   </body>  
  182.   <script type="text/javascript">  
  183.       
  184.   </script>  
  185. </html>  


pom.xml

[html] view plain copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  2.   <modelVersion>4.0.0</modelVersion>  
  3.   <groupId>MybatisLesson</groupId>  
  4.   <artifactId>MybatisLesson</artifactId>  
  5.   <version>0.0.1-SNAPSHOT</version>  
  6.   <packaging>war</packaging>  
  7.   <name/>  
  8.   <description/>  
  9.   <dependencies>  
  10.     <dependency>  
  11.       <groupId>org.apache.openejb</groupId>  
  12.       <artifactId>javaee-api</artifactId>  
  13.       <version>5.0-1</version>  
  14.       <scope>provided</scope>  
  15.     </dependency>  
  16.     <dependency>  
  17.       <groupId>javax.faces</groupId>  
  18.       <artifactId>jsf-api</artifactId>  
  19.       <version>1.2_04</version>  
  20.       <scope>provided</scope>  
  21.     </dependency>  
  22.     <dependency>  
  23.       <groupId>javax.servlet</groupId>  
  24.       <artifactId>jstl</artifactId>  
  25.       <version>1.2</version>  
  26.       <scope>provided</scope>  
  27.     </dependency>  
  28.     <dependency>  
  29.       <groupId>javax.servlet.jsp</groupId>  
  30.       <artifactId>jsp-api</artifactId>  
  31.       <version>2.1</version>  
  32.       <scope>provided</scope>  
  33.     </dependency>  
  34.     <dependency>  
  35.       <groupId>javax.faces</groupId>  
  36.       <artifactId>jsf-impl</artifactId>  
  37.       <version>1.2_04</version>  
  38.       <scope>provided</scope>  
  39.     </dependency>  
  40.       
  41.     <!-- 自动加载mybatis架包 -->  
  42.     <dependency>  
  43.       <groupId>org.mybatis</groupId>  
  44.       <artifactId>mybatis</artifactId>  
  45.       <version>3.2.8</version>  
  46.     </dependency>  
  47.       
  48.     <!--   
  49.     加载本地ojdbc6.jar  
  50.     前面三个可以乱填,最好是配上,不然可能会报错  
  51.     scope   系统  
  52.     scope   路径  
  53.      -->  
  54.     <dependency>  
  55.       <groupId>oracle</groupId>  
  56.       <artifactId>orcale</artifactId>  
  57.       <version>3.2.8</version>  
  58.         <scope>system</scope>  
  59.         <systemPath>C:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar</systemPath>  
  60.     </dependency>  
  61.       
  62.     <!-- 加载log4j日志 -->  
  63.     <dependency>  
  64.       <groupId>log4j</groupId>  
  65.       <artifactId>log4j</artifactId>  
  66.       <version>1.2.17</version>  
  67.     </dependency>  
  68.       
  69.     <dependency>  
  70.       <groupId>cglib</groupId>  
  71.       <artifactId>cglib</artifactId>  
  72.       <version>3.2.4</version>  
  73.     </dependency>  
  74.   
  75.     <dependency>  
  76.       <groupId>org.mybatis.generator</groupId>  
  77.       <artifactId>mybatis-generator-core</artifactId>  
  78.       <version>1.3.3</version>  
  79.     </dependency>  
  80.   
  81.     <dependency>  
  82.       <groupId>org.mybatis.generator</groupId>  
  83.       <artifactId>mybatis-generator-maven-plugin</artifactId>  
  84.       <version>1.3.3</version>  
  85.     </dependency>   
  86.    
  87.     <!-- 加载springmvc架包 -->  
  88.     <dependency>  
  89.       <groupId>org.springframework</groupId>  
  90.       <artifactId>spring-webmvc</artifactId>  
  91.       <version>4.3.2.RELEASE</version>  
  92.     </dependency>  
  93.       
  94.     <dependency>  
  95.       <groupId>org.springframework</groupId>  
  96.       <artifactId>spring-web</artifactId>  
  97.       <version>4.3.2.RELEASE</version>  
  98.     </dependency>  
  99.       
  100.     <dependency>  
  101.       <groupId>org.springframework</groupId>  
  102.       <artifactId>spring-jdbc</artifactId>  
  103.       <version>4.3.2.RELEASE</version>  
  104.     </dependency>  
  105.       
  106.     <!-- mybatis集成spring的核心包 -->  
  107.     <dependency>  
  108.       <groupId>org.mybatis</groupId>  
  109.       <artifactId>mybatis-spring</artifactId>  
  110.       <version>1.2.3</version>  
  111.     </dependency>  
  112.       
  113.     <!-- 新数据库连接池架包dbcp   -->  
  114.     <dependency>  
  115.       <groupId>commons-dbcp</groupId>  
  116.       <artifactId>commons-dbcp</artifactId>  
  117.       <version>1.4</version>  
  118.     </dependency>  
  119.       
  120.     <!-- aspectjweaver 事务架包 -->  
  121.     <dependency>  
  122.       <groupId>org.aspectj</groupId>  
  123.       <artifactId>com.springsource.org.aspectj.weaver</artifactId>  
  124.       <version>1.6.8.RELEASE</version>  
  125.     </dependency>  
  126.       
  127.     <!-- jackson架包 -->  
  128.     <dependency>  
  129.       <groupId>com.fasterxml.jackson.core</groupId>  
  130.       <artifactId>jackson-annotations</artifactId>  
  131.       <version>2.6.0</version>  
  132.     </dependency>  
  133.       
  134.     <dependency>  
  135.       <groupId>org.codehaus.jackson</groupId>  
  136.       <artifactId>jackson-mapper-asl</artifactId>  
  137.       <version>1.9.12</version>  
  138.     </dependency>  
  139.       
  140.     <!-- 加载json架包 -->  
  141.     <dependency>  
  142.       <groupId>net.sf.json-lib</groupId>  
  143.       <artifactId>json-lib</artifactId>  
  144.       <version>2.4</version>  
  145.       <classifier>jdk15</classifier>  
  146.     </dependency>  
  147.       
  148.     <dependency>  
  149.       <groupId>com.fasterxml.jackson.core</groupId>  
  150.       <artifactId>jackson-core</artifactId>  
  151.       <version>2.6.0</version>  
  152.     </dependency>  
  153.       
  154.     <dependency>  
  155.       <groupId>com.fasterxml.jackson.core</groupId>  
  156.       <artifactId>jackson-databind</artifactId>          
  157.       <version>2.6.0</version>  
  158.     </dependency>    
  159.       
  160.   </dependencies>  
  161.   <build>  
  162.     <sourceDirectory>${basedir}/src</sourceDirectory>  
  163.     <outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>  
  164.     <resources>  
  165.       <resource>  
  166.         <directory>${basedir}/src</directory>  
  167.         <excludes>  
  168.           <exclude>**/*.java</exclude>  
  169.         </excludes>  
  170.       </resource>  
  171.     </resources>  
  172.     <plugins>  
  173.       <plugin>  
  174.         <artifactId>maven-war-plugin</artifactId>  
  175.         <configuration>  
  176.           <webappDirectory>${basedir}/WebRoot</webappDirectory>  
  177.           <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>  
  178.         </configuration>  
  179.       </plugin>  
  180.       <plugin>  
  181.         <artifactId>maven-compiler-plugin</artifactId>  
  182.         <configuration>  
  183.           <source>1.5</source>  
  184.           <target>1.5</target>  
  185.         </configuration>   
  186.       </plugin>  
  187.     </plugins>  
  188.   </build>  
  189. </project>  


springmvc.xml

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.       
  8.       
  9.     <!-- 加载spring.xml配置文件 -->  
  10.     <!-- spring 要使用springmvc的标签和国际化必须加载spring-->  
  11.     <context-param>  
  12.         <param-name>contextConfigLocation</param-name>  
  13.         <param-value>classpath:/spring.xml</param-value>  
  14.     </context-param>  
  15.     <listener>  
  16.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  17.     </listener>  
  18.   
  19.     <!--   
  20.     设置一个字符集的过滤器,这个过滤器要在其它过滤器之前过滤,  
  21.     不然其它过滤器先拦截同样会出现中文乱码问题  
  22.      -->  
  23.     <filter>  
  24.         <filter-name>utf</filter-name>  
  25.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  26.         <init-param>  
  27.             <param-name>encoding</param-name>  
  28.             <param-value>UTF-8</param-value>  
  29.         </init-param>  
  30.     </filter>  
  31.     <filter-mapping>  
  32.         <filter-name>utf</filter-name>  
  33.         <url-pattern>/*</url-pattern>  
  34.     </filter-mapping>  
  35.   
  36.  <filter>  
  37.     <filter-name>myencode</filter-name>  
  38.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  39.     <init-param>  
  40.         <param-name>encoding</param-name>  
  41.         <param-value>UTF-8</param-value>  
  42.     </init-param>  
  43.   </filter>  
  44.   
  45.  <!-- servlet一般是不支持delete和put  所以要配置一个过滤器    这个项目没有用请求限定-->  
  46.  <filter>  
  47.     <filter-name>hidden</filter-name>  
  48.     <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
  49.  </filter>  
  50.  <filter-mapping>  
  51.     <filter-name>hidden</filter-name>  
  52.     <url-pattern>/*</url-pattern>  
  53.  </filter-mapping>  
  54.   
  55.   <!-- 配置action -->  
  56.   <servlet>  
  57.     <servlet-name>spring</servlet-name>  
  58.     <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>  
  59.     <init-param>  
  60.         <param-name>contextConfigLocation</param-name>  
  61.         <param-value>/WEB-INF/springmvc.xml</param-value>  
  62.     </init-param>  
  63.     <load-on-startup>0</load-on-startup>  
  64.   </servlet>  
  65.   
  66.   <servlet-mapping>  
  67.     <servlet-name>spring</servlet-name>  
  68.     <url-pattern>*.action</url-pattern>  
  69.     <url-pattern>/</url-pattern>  
  70.   </servlet-mapping>  
  71.       
  72.   <welcome-file-list>  
  73.     <welcome-file>index.jsp</welcome-file>  
  74.   </welcome-file-list>  
  75.     
  76.   
  77. <system.web.extensions>  
  78.         <scripting>  
  79.             <webServices>  
  80.                 <jsonSerialization maxJsonLength="#####"/>  
  81.             </webServices>  
  82.         </scripting>  
  83.     </system.web.extensions>  
  84.     
  85. </web-app> 
原创粉丝点击