maven+spring+springMVC+mybatis+log4j+easyui增删改查实例

4 篇文章 0 订阅

一.项目环境

       IDE:Eclipse Java EE IDE for Web Developers.

            Version: Oxygen.3 Release (4.7.3)

               Build id: 20180308-1800

    数据库:Oracle11G

       easyUI:jQuery EasyUI 1.3.2

       其他:见maven pom.xml配置文件

二.创建一个maven web项目

具体步骤见https://blog.csdn.net/ptsx0607/article/details/78749738

三.代码结构:


四. maven方式引入jar包依赖,编写pom.xml文件,如下:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lee</groupId>
  <artifactId>MSSMDemo001</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>
        <!-- spring版本号 -->
        <spring.version>4.0.2.RELEASE</spring.version>
        <!-- mybatis版本号 -->
        <mybatis.version>3.2.6</mybatis.version>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
            <scope>test</scope>
        </dependency>

        <!-- spring核心包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>

        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- 导入java ee jar 包 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>

        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.30</version>
        </dependency>
		<!-- oracle数据库驱动包 ,首次添加会报错,是因为oracle的ojdbc.jar是收费的,
		     所以maven的中央仓库中没有这个资源,只能通过配置本地库才能加载到项目中去。
		     具体操作是将下载好的ojdbc6.jar(本项目根目录放了一个)复制到系统默认的用户目录下,我的用户目录是H:\programsetup2018\apache-maven-3.5.3\bin,然后在该目录下打开命令窗口,
		     然后输入如下命令:
				mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc6.jar
		      回车后出现build success即为成功。		
		-->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc14</artifactId>
			<version>10.2.0.4.0</version>
		</dependency>
        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.2.2</version>
        </dependency> 

        <!-- JSTL标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency> 

        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <!-- 格式化对象,方便输出日志 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.41</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end --> 

        <!-- 映入JSON -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency> 

        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>
        <!-- json解析包 ,必须要指定jdk版本,不然会报错-->   
        <dependency>  
            <groupId>net.sf.json-lib</groupId>  
            <artifactId>json-lib</artifactId>  
            <version>2.4</version> 
            <classifier>jdk15</classifier><!--指定jdk版本-->  
        </dependency> 
    </dependencies>
</project>

保存后,联网状态下自动下载jar包到本地私服,其中几个关键包引入时会报错,此处加入了注释,可以看一下。

五. 后台代码

控制器类:

注:此处写了两个控制器类,UserController.java主要是初次接触springMVC,测试前后台传递值得方式,和后面的增删改查没关系,可以不看,但是此处还是贴一下,用户管理功能主要是UserController02.java:

UserController.java:

package com.lee.user.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.el.PropertyNotWritableException;
import javax.print.attribute.standard.RequestingUserName;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.lee.user.pojo.User;

@Controller
@RequestMapping(value="userController")
public class UserController{
    private static Logger log=LoggerFactory.getLogger(UserController.class);  
    /**
     * @Description: 返回  ModelAndView
     * @param
     * @return: void
     * @author: ls  2018年4月16日  上午9:31:13
     */
	@RequestMapping(value="userShow01")
	public ModelAndView  userShow01(HttpServletRequest request,
			HttpServletResponse response,ModelAndView mav) {
		
		mav.setViewName("user/usershow");
		mav.addObject("username", "lee");
		
		return mav;
	}
	/**
	 * @Description: ajax传值
	 * @param
	 * @return: void
	 * @author: ls  2018年4月16日  上午9:31:13
	 */
	@RequestMapping(value="userShow02")
	public void  userShow02(String username,HttpServletResponse response) {
	    response.setContentType("text/html");
	    response.setCharacterEncoding("UTF-8");
		try {
			PrintWriter pw = response.getWriter();
			pw.println(username);
			pw.flush();
			pw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
     * @Description: ajax传值  对象
     * @param
     * @return: void
     * @author: ls  2018年4月16日  上午9:31:13
     */
    @RequestMapping(value="userShow03")
    public void  userShow03(User user,HttpServletResponse response) {
        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        try {
            PrintWriter pw = response.getWriter();
            System.out.println(user);
            System.out.println(user.getUserName());
            pw.println(user.getUserName());
            pw.flush();
            pw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * @Description: ajax传值  对象
     * @param
     * @return: void
     * @author: ls  2018年4月16日  上午9:31:13
     */
    @RequestMapping(value="userShow04")
    @ResponseBody
    public User  userShow04(User user,HttpServletResponse response) {
        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        System.out.println(user.getUserName());
        user.setUserName("1234567");
        return user;
    }
	@RequestMapping(value="addUser")
	@ResponseBody
    public ModelAndView addUser(ModelAndView mav) {
        mav.setViewName("user/user_add");
        return mav;
    }

}

UserController02.java:

package com.lee.user.controller;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;


import com.lee.user.pojo.User;
import com.lee.user.service.UserService;
import com.lee.util.PageBean;
import com.lee.util.ResponseUtil;
import com.lee.util.StringUtil;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

@Controller  
@RequestMapping("/user")  
public class UserController02 {  
    private static Logger log=LoggerFactory.getLogger(UserController02.class);  
    @Autowired 
    private UserService userService;  
      
    //文件上传页面  
    @RequestMapping(value="/upload.do")  
    public String showUploadPage(){  
        return "file/file";  
    }  
    //文件上传  
    @RequestMapping(value="/doUpload.do",method=RequestMethod.POST)  
    public String doUploadFile(@RequestParam("file")MultipartFile file) throws IOException{  
        if (!file.isEmpty()) {  
            log.info("Process file:{}",file.getOriginalFilename());  
        }  
        FileUtils.copyInputStreamToFile(file.getInputStream(), new File("D:\\",file.getOriginalFilename()));  
        return "file/success";  
    }  
    /** 
     * 用户管理页面 
     * @return 
     */  
    @RequestMapping(value="/userManage.do")  
    public String userManagePage(){  
        return "userManage";  
    }  
    /** 
     * 添加或者修改 
     * @param user 
     * @param res 
     * @return 
     * @throws Exception 
     */  
    @RequestMapping("/save.do")  
    public String save(User user,HttpServletResponse res) throws Exception{  
        //操作记录条数,初始化为0  
        int resultTotal = 0;  
        if (user.getId() == null) {  
            resultTotal = userService.add(user);  
        }else{  
            resultTotal = userService.update(user);  
        }  
        JSONObject jsonObject = new JSONObject();  
        if(resultTotal > 0){   //说明修改或添加成功  
            jsonObject.put("success", true);  
        }else{  
            jsonObject.put("success", false);  
        }  
        ResponseUtil.write(res, jsonObject);  
        return null;  
    }  
    /** 
     * 用户分页查询 
     * @param page 
     * @param rows 
     * @param s_user 
     * @param res 
     * @return 
     * @throws Exception 
     */  
    @RequestMapping("/list.do")  
    public String list(@RequestParam(value="page",required=false) String page,@RequestParam(value="rows",required=false) String rows,User s_user,HttpServletResponse res) throws Exception{  
        /*
         * easyui分页控件 通过在datagrid中设置pagination:true 就会显示分页 
         * 当请求时, datagrid会向后台传递两个参数:
         * rows(每一页展示多少条数据) page(第几页)
        */
        log.info(page);
        log.info(rows);
        PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));  
        Map<String,Object> map=new HashMap<String,Object>();  
        map.put("userName", StringUtil.formatLike(s_user.getUserName()));  
        map.put("start", pageBean.getStart());  
        map.put("end", pageBean.getEnd());  
        List<User> userList=userService.find(map);  
        Long total=userService.getTotal(map);  
        JSONObject result=new JSONObject();  
        JSONArray jsonArray=JSONArray.fromObject(userList); 
        /*
         * 后台传json数据时也要按照datagrid的数据格式,传递两个数据:
         * total键 存放总记录数
         * rows键 存放每页记录
        */
        result.put("rows", jsonArray);  
        result.put("total", total);  
        ResponseUtil.write(res, result);  
        return null;  
    }  
    /** 
     * 删除用户 
     * @param ids 
     * @param res 
     * @return 
     * @throws Exception 
     */  
    @RequestMapping("/delete.do")  
    public String delete(@RequestParam(value="ids") String ids,HttpServletResponse res) throws Exception{  
        String[] idStr = ids.split(",");  
        JSONObject jsonObject = new JSONObject();  
        for (String id : idStr) {  
            userService.delete(Integer.parseInt(id));  
        }  
        jsonObject.put("success", true);  
        ResponseUtil.write(res, jsonObject);  
        return null;  
    }  
}  

实体类:

User.java:

package com.lee.user.pojo;

import java.io.Serializable;

public class User implements Serializable{
    /**
     * 用户实体
     * @author ls
     */
    private static final long serialVersionUID = 1L;
    private Integer id;  
    private String userName;  
    private String password;  
    private Integer age;  
    private String trueName;  
    private String email;  
    private String phone;  
    private String roleName;
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getTrueName() {
        return trueName;
    }
    public void setTrueName(String trueName) {
        this.trueName = trueName;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    } 
}

dao接口及mapper.xml:

UserDao.java:

package com.lee.user.dao;

import java.util.List;
import java.util.Map;

import com.lee.user.pojo.User;

public interface UserDao {
    /**
     * @Description: 删除用户
     * @param
     * @return: int
     * @author: ls  2018年4月23日  上午10:44:11
     */
    public int delete(int id);
    /**
     * @Description: 更新用户
     * @param
     * @return: int
     * @author: ls  2018年4月23日  上午10:44:48
     */
    public int update(User user);
    /**
     * @Description: 添加用户
     * @param
     * @return: int
     * @author: ls  2018年4月23日  上午10:45:12
     */
    public int add(User user);
    /**
     * @Description: 用户查询
     * @param
     * @return: List<User>
     * @author: ls  2018年4月23日  上午10:46:38
     */
    public List<User> find(Map<String,Object> map);
    /**
     * @Description: 获取总记录数
     * @param
     * @return: long
     * @author: ls  2018年4月23日  上午10:47:28
     */
    public long getTotal(Map<String,Object> map);
}

userMapper.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE mapper  
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
<mapper namespace="com.lee.user.dao.UserDao">  
     <!-- 定义缓存  一般是一级缓存,如果用同一个sqlsession 那么相同查询直接会从缓存中查找 -->  
    <cache size="1024" flushInterval="60000" eviction="LRU" readOnly="false"></cache>  
    <!-- 增加 --> 
    <!-- MyBatis 插入空值时,需要指定JdbcType 
		mybatis insert空值报空值异常,但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换, 
		两种方式:
			1. 在sql里的参数里加,如:#{fee,jdbcType=NUMERIC},  
			2. 在resultMap中加,如下:
			<result property="userName" column="userName" jdbcType="VARCHAR" />  
	 -->
    <insert id="add" parameterType="com.lee.user.pojo.User">  
        insert into users(id,username,password,age,truename,email,phone,rolename) 
        values
        (users_s.nextval,#{userName},#{password},#{age,jdbcType=NUMERIC},
         #{trueName},#{email},#{phone},#{roleName}
        )  
    </insert>  
    <resultMap id="userResultMap" type="com.lee.user.pojo.User" >  
        <id property="id" column="id" jdbcType="NUMERIC" />  
        <result property="userName" column="userName" jdbcType="VARCHAR" />  
        <result property="password" column="password" jdbcType="VARCHAR" />  
        <result property="age" column="age" jdbcType="NUMERIC" />  
        <result property="trueName" column="trueName" jdbcType="VARCHAR" />  
        <result property="email" column="email" jdbcType="VARCHAR" />  
        <result property="phone" column="phone" jdbcType="VARCHAR" />  
        <result property="roleName" column="roleName" jdbcType="VARCHAR" />  
    </resultMap>  
    <!--  查询 - 含分页 -->
    <select id="find" parameterType="com.lee.user.pojo.User" resultMap="userResultMap">  
        select * from 
        (
        	select u1.*,rownum rn from users u1
        )   
        <where>  
            <if test="userName!=null and userName!='' ">  
                and userName like #{userName}  
            </if> 
            <if test="start!=null and end!=null">  
	            and rn between  #{start} and #{end}  
	        </if> 
        </where>  
    </select>  
    <select id="getTotal" parameterType="Map" resultType="Long">  
        select count(*) from users  
        <where>  
            <if test="userName!=null and userName!='' ">  
                and userName like #{userName}  
            </if>  
        </where>  
    </select>  
    <!-- 用户删除 -->  
    <delete id="delete" parameterType="Integer">  
        delete from users where id = #{id}  
    </delete>  
    <!-- 用户修改 -->  
    <update id="update" parameterType="com.lee.user.pojo.User">  
        update users  
        <set>  
            <if test="age != null and age != ''">age = #{age},</if>  
            <if test="userName != null and userName != ''">userName = #{userName},</if>  
            <if test="password != null and password != ''">password = #{password},</if>  
            <if test="trueName != null and trueName != ''">trueName = #{trueName},</if>  
            <if test="email != null and email != ''">email = #{email},</if>  
            <if test="phone != null and phone != ''">phone = #{phone},</if>  
            <if test="roleName != null and roleName != ''">roleName = #{roleName},</if>  
        </set>  
        where id = #{id}  
    </update>  
</mapper> 

UserService及UserServiceImpl:

UserService.java:

package com.lee.user.service;

import java.util.List;
import java.util.Map;

import com.lee.user.pojo.User;

public interface UserService {
    public int delete(int id);  
    public int update(User user);  
    public int add(User user);  
    public List<User> find(Map<String,Object> map);  
    public Long getTotal(Map<String,Object> map);  
}

UserServiceImpl.java:

package com.lee.user.serviceImpl;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.lee.user.dao.UserDao;
import com.lee.user.pojo.User;
import com.lee.user.service.UserService;


@Service("userService")  
public class UserServiceImpl implements UserService {
    
    @Autowired
	private UserDao userDao;

    public int delete(int id) {
        // TODO Auto-generated method stub
        return userDao.delete(id);
    }

    public int update(User user) {
        // TODO Auto-generated method stub
        return userDao.update(user);
    }

    public int add(User user) {
        // TODO Auto-generated method stub
        return userDao.add(user);
    }

    public List<User> find(Map<String, Object> map) {
        // TODO Auto-generated method stub
        return userDao.find(map);
    }

    public Long getTotal(Map<String, Object> map) {
        // TODO Auto-generated method stub
        return userDao.getTotal(map);
    }
}

下面是几个工具类:

分页PageBean.java:

package com.lee.util;

public class PageBean {
    private int page; // 第几页  
    private int pageSize; // 每页记录数  
    private int start;  // 页起始
    private int end;    //页结束
    public PageBean(int page, int pageSize) {  
        super();  
        this.page = page;  
        this.pageSize = pageSize;  
    }  
    public int getPage() {  
        return page;  
    }  
    public void setPage(int page) {  
        this.page = page;  
    }  
    public int getPageSize() {  
        return pageSize;  
    }  
    public void setPageSize(int pageSize) {  
        this.pageSize = pageSize;  
    }
    //重写页开始
    public int getStart() {  
        return (page-1)*pageSize+1;  
    } 
    //重写页结束
    public int getEnd(){
        return page*pageSize;
    }
}

用于返回json数据工具类ResponseUtil.java:

package com.lee.util;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

/**
 * 用于返回json数据工具类
 * @author ls
 *
 */
public class ResponseUtil {
    public static void write(HttpServletResponse response,Object object)throws Exception{  
        response.setContentType("text/html;charset=utf-8");  
        PrintWriter out=response.getWriter();  
        out.println(object);  
        out.flush();  
        out.close();  
    }  
}

字符串工具类StringUtil.java:

package com.lee.util;

/**
 * 字符串工具类
 * @author ls
 *
 */
public class StringUtil {
    /** 
     * 判断是否是空 
     * @param str 
     * @return 
     */  
    public static boolean isEmpty(String str){  
        if(str==null||"".equals(str.trim())){  
            return true;  
        }else{  
            return false;  
        }  
    }  
      
    /** 
     * 判断是否不是空 
     * @param str 
     * @return 
     */  
    public static boolean isNotEmpty(String str){  
        if((str!=null)&&!"".equals(str.trim())){  
            return true;  
        }else{  
            return false;  
        }  
    }  
      
    /** 
     * 格式化模糊查询 
     * @param str 
     * @return 
     */  
    public static String formatLike(String str){  
        if(isNotEmpty(str)){  
            return "%"+str+"%";  
        }else{  
            return null;  
        }  
    }  
}

springMVC中文编码UtfFilter.java:

package com.lee.util;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;



//@WebFilter("/*")
public class UtfFilter implements Filter{

    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("UTF-8");
        chain.doFilter(request, response); 
    }

    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        
    }
    
}

六. 前台代码:

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ include file="/jsp/commons/include.jsp"%> 
<!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">
<title>用户信息</title>
<script type="text/javascript">
/**
 * 02 ajax传值 
 */ 
function loginUser02(){
	var username = $("#username").val();
	var queryData = {"username":username};
	$.post("userController/userShow02",queryData,function(data){
		$("#userinfo").val(data);
	});
}
/**
 * 03 ajax传值   传对象
 */
function loginUser03(){
	var username = $("#username").val();
	var queryData = {"username":username};
	$.post("userController/userShow03",queryData,function(data){
		$("#userinfo").val(data);
	});
}
/**
 * 04 ajax传值   传对象 @ResponseBody
 */
function loginUser04(){
	var username = $("#username").val();
	var queryData = {"username":username};
	$.ajax({
        type : 'POST',
        url : "userController/userShow04",
        dataType : 'json',
        data : queryData,
        success : function(data) {
            $("#userinfo").val(data.username);
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("出现异常,异常信息:"+textStatus,"error");
        }
    });
}
</script>
</head>
	<body class="easyui-layout" fit="true" scroll="no">
		<div id="userButton"  data-options=" region:'north'," style="height:100px;padding:5px;">
			用户名:<input class="easyui-textbox" data-options="iconCls:'icon-search'" style="width:300px" id="username" name="username" > 
			<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-save'"  
			οnclick="loginUser02();">登录02-ajax 后台字符串获取</a>
			<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-save'"  
			οnclick="loginUser03();">登录03-ajax 后台对象获取</a>
			<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-save'"  
			οnclick="loginUser04();">登录04-ajax 后台对象获取@ResponseBody</a>
			<a href="jsp/user/userManage.jsp" class="easyui-linkbutton" data-options="iconCls:'icon-save'"  
			>转到用户管理页面</a>
		</div>
		<div style="margin:10px 0;"></div>
		<div id="userList" data-options="region:'center' " >
			<table class="easyui-datagrid" data-options="fitColumns:true,pagination:true,rownumbers:true,pagePosition:'bottom',pageSize:10">
				<thead>   
			        <tr>   
			            <th data-options="field:'code',width:100">用户编码</th>   
			            <th data-options="field:'name',width:100">用户名称</th>   
			            <th data-options="field:'price',width:100">年龄</th>  
			            <th data-options="field:'price',width:100">性别</th>  
			        </tr>   
			    </thead>
			</table>
		</div>
		<div id="userinfoDiv" data-options="region:'south' " style="height:100px;" >
			<input type='text' id='userinfo' name='userinfo' />
		</div>
	</body>
</html>

公用引入文件,主要是引入easyUI相关文件(easyUI相关文件此处不贴了,可以自己下载)include.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
	String p = request.getContextPath();
	String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+p+"/";
%>
 <link rel="stylesheet" type="text/css" href="<%=path %>easyui/themes/default/easyui.css" />
 <link rel="stylesheet" type="text/css" href="<%=path %>easyui/themes/icon.css" />
 <link rel="stylesheet" type="text/css" href="<%=path %>easyui/demo.css" />
 <script type="text/javascript" src="<%=path %>easyui/jquery-1.8.0.min.js"></script>
 <script type="text/javascript" src="<%=path %>easyui/jquery.easyui.min.js"></script>
 <script type="text/javascript" src="<%=path %>easyui/jquery.tooltip.js"></script>
 <script type="text/javascript" src="<%=path %>easyui/easyui-lang-zh_CN.js"></script>

用户管理userManage.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ include file="/jsp/commons/include.jsp"%> 
<!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">
<title>用户管理</title>
<script type="text/javascript">  
        var url;  
        /**
        * 新增用户
        */
        function openUserAddDialog() {  
            $("#dlg").dialog("open").dialog("setTitle", "添加用户信息");  
            url = "${pageContext.request.contextPath}/user/save.do";  
        }
        /**
        * 复制增加
        */
        function openUserCopyAddDialog(){
        	var selectRows = $("#dg").datagrid("getSelected");
        	$("#dlg").dialog("open").dialog("setTitle","复制增加用户信息");
        	$("#fm").form("load",selectRows);
        	url = "${pageContext.request.contextPath}/user/save.do";  
        }
        /**
         * 保存用户信息
         */
        function saveUser() {  
            $("#fm").form("submit", {  
                url : url,  
                onSubmit : function() {  
                    if ($("#roleName").combobox("getValue") == "") {  
                        $.messager.alert("系统提示", "请选择用户角色!");  
                        return false;  
                    }  
                    return $(this).form("validate");  
                },  
                success : function(result) {  
                    var result = eval('(' + result + ')');  
                    if (result.success) {  
                        $.messager.alert("系统提示", "保存成功!");  
                        resetValue();  
                        $("#dlg").dialog("close");  
                        $("#dg").datagrid("reload");  
                    } else {  
                        $.messager.alert("系统提示", "保存失败!");  
                        return;  
                    }  
                }  
            });  
        }
        /**
         * 查询用户
         */
        function searchUser() {  
            $("#dg").datagrid('load', {  
                "userName" : $("#s_userName").val()  
            });  
        }
        /**
         * 表单信息重置
         */
        function resetValue() {  
            $("#userName").val("");  
            $("#password").val("");  
            $("#trueName").val("");  
            $("#email").val("");  
            $("#phone").val("");  
            $("#roleName").combobox("setValue", "");  
        }  
        /**
         * 删除用户
         */
        function deleteUser() {  
            var selectedRows = $("#dg").datagrid("getSelections");  
            if (selectedRows.length == 0) {  
                $.messager.alert("系统提示", "请选择要删除的数据!");  
                return;  
            }  
            var strIds = [];  
            for ( var i = 0; i < selectedRows.length; i++) {  
                strIds.push(selectedRows[i].id);  
            }  
            var ids = strIds.join(",");  
            $.messager.confirm("系统提示", "您确定要删除这<font color=red>"  
                    + selectedRows.length + "</font>条数据吗?", function(r) {  
                if (r) {  
                    $.post("${pageContext.request.contextPath}/user/delete.do", {  
                        ids : ids  
                    }, function(result) {  
                        if (result.success) {  
                            $.messager.alert("系统提示", "数据已成功删除!");  
                            $("#dg").datagrid("reload");  
                        } else {  
                            $.messager.alert("系统提示", "数据删除失败,请联系系统管理员!");  
                        }  
                    }, "json");  
                }  
            });  
        } 
        /**
         * 修改用户
         */
        function openUserModifyDialog() {  
            var selectedRows = $("#dg").datagrid("getSelections");  
            if (selectedRows.length != 1) {  
                $.messager.alert("系统提示", "请选择一条要编辑的数据!");  
                return;  
            }  
            var row = selectedRows[0];  
            $("#dlg").dialog("open").dialog("setTitle", "编辑用户信息");  
            $("#fm").form("load", row);  
            url = "${pageContext.request.contextPath}/user/save.do?id=" + row.id;  
        }  
    </script>  
  </head>  
    
  <body style="margin: 1px">  
    <table id="dg" title="用户管理" class="easyui-datagrid" fitColumns="true"  
        pagination="true" rownumbers="true"  
        url="${pageContext.request.contextPath}/user/list.do" fit="true"  
        toolbar="#tb">  
        <thead>  
            <tr>  
                <th field="cb" checkbox="true" align="center"></th>  
                <th field="id" width="50" align="center">编号</th>  
                <th field="userName" width="50" align="center">用户名</th>  
                <th field="password" width="50" align="center">密码</th>  
                <th field="trueName" width="50" align="center">真实姓名</th> 
                <th field="age" width="50" align="center">年龄</th> 
                <th field="email" width="50" align="center">邮件</th>  
                <th field="phone" width="50" align="center">联系电话</th>  
                <th field="roleName" width="50" align="center">角色</th>  
            </tr>  
        </thead>  
    </table>  
    <div id="tb">  
        <a href="javascript:openUserAddDialog()" class="easyui-linkbutton"  
        iconCls="icon-add" plain="true">添加</a> 
        <a href="javascript:openUserCopyAddDialog()" class="easyui-linkbutton"  
        iconCls="icon-add" plain="true">复制添加</a>
        <a href="javascript:openUserModifyDialog()" class="easyui-linkbutton"  
        iconCls="icon-edit" plain="true">修改</a> 
        <a href="javascript:deleteUser()" class="easyui-linkbutton"  
        iconCls="icon-remove" plain="true">删除</a>
        <a href="${pageContext.request.contextPath}/user/upload.do" class="easyui-linkbutton"  
        iconCls="icon-remove" plain="true">文件上传</a>   
        <div>  
             用户名: <input type="text" id="s_userName" size="20"  
                οnkeydοwn="if(event.keyCode == 13)searchUser()" /> <a  
                href="javascript:searchUser()" class="easyui-linkbutton"  
                iconCls="icon-search" plain="true">查询</a>  
        </div>  
        <div id="dlg-buttons">  
            <a href="javascript:saveUser()" class="easyui-linkbutton"  
                iconCls="icon-ok">保存</a> <a href="javascript:closeUserDialog()"  
                class="easyui-linkbutton" iconCls="icon-cancel">关闭</a>  
        </div>  
        <div id="dlg" class="easyui-dialog"  
            style="width: 730px;height:280px;padding:10px 10px;" closed="true"  
            buttons="#dlg-buttons">  
            <form method="post" id="fm">  
                <table cellspacing="8px;">  
                    <tr>  
                        <td>用户名:</td>  
                        <td><input type="text" id="userName" name="userName"  
                            class="easyui-validatebox" required="true" /> <span  
                            style="color: red">*</span>  
                        </td>  
                        <td>  </td>  
                        <td>密码:</td>  
                        <td><input type="password" id="password" name="password"  
                            class="easyui-validatebox" required="true" /> <span  
                            style="color: red">*</span>  
                        </td>  
                    </tr>  
                    <tr>  
                        <td>真实姓名:</td>  
                        <td><input type="text" id="trueName" name="trueName"  
                            class="easyui-validatebox" required="true" /> <span  
                            style="color: red">*</span>  
                        </td>  
                        <td>  </td>  
                        <td>邮箱:</td>  
                        <td><input type="text" id="email" name="email"  
                            validType="email" class="easyui-validatebox" required="true" /> <span  
                            style="color: red">*</span>  
                        </td>  
                    </tr>  
                    <tr>  
                        <td>联系电话:</td>  
                        <td><input type="text" id="phone" name="phone"  
                            class="easyui-validatebox" required="true" /> <span  
                            style="color: red">*</span>  
                        </td>  
                        <td>  </td>  
                        <td>用户角色:</td>  
                        <td><select name="roleName" class="easyui-combobox"  
                            id="roleName" style="width: 154px;" editable="false"  
                            panelHeight="auto">  
                                <option value="">请选择角色</option>  
                                <option value="系统管理员">系统管理员</option>  
                                <option value="销售主管">销售主管</option>  
                                <option value="客户经理">客户经理</option>  
                                <option value="高管">高管</option>  
                        </select>  <span style="color: red">*</span>  
                        </td>  
                    </tr> 
                    <tr>  
                        <td>年龄:</td>  
                        <td><input type="text" id="age" name="age"  
                            class="easyui-validatebox" required="true" /> <span  
                            style="color: red">*</span>  
                        </td>  
                    </tr> 
                </table>  
            </form>  
        </div>  
    </div>  
  </body>  
</html>  

文件相关:

file.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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">  
<title>Insert title here</title>  
</head>  
<body>  
    <h1>上传文件</h1>  
    <form method="post" action="../user/doUpload.do" enctype="multipart/form-data">  
        <input type="file" name="file"/>  
        <input type="submit" value="上传文件"/>  
          
    </form>  
</body>  
</html>  

success.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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">  
<title>Insert title here</title>  
</head>  
<body>  
文件上传成功。。。。。。
</body>  
</html>  

七. 配置文件类:

jdbc.properties:

#mysql driver
#driver=com.mysql.jdbc.Driver
#url=jdbc:mysql://localhost:3306/db_oep
#oracle driver
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
username=CHARGE_STANDARD4
password=CHARGE_STANDARD4
initialSize=0
maxActive=20
maxIdle=20
minIdle=1
maxWait=60000

log4j.properties:

#\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B
log4j.rootLogger=DEBUG,Console,File
#\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u5730\u4E3A\u63A7\u5236\u53F0
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#\u53EF\u4EE5\u7075\u6D3B\u5730\u6307\u5B9A\u65E5\u5FD7\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0B\u9762\u4E00\u884C\u662F\u6307\u5B9A\u5177\u4F53\u7684\u683C\u5F0F
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

#\u6587\u4EF6\u5927\u5C0F\u5230\u8FBE\u6307\u5B9A\u5C3A\u5BF8\u7684\u65F6\u5019\u4EA7\u751F\u4E00\u4E2A\u65B0\u7684\u6587\u4EF6
log4j.appender.File = org.apache.log4j.RollingFileAppender
#\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55
log4j.appender.File.File = logs/ssm.log
#\u5B9A\u4E49\u6587\u4EF6\u6700\u5927\u5927\u5C0F
log4j.appender.File.MaxFileSize = 10MB
# \u8F93\u51FA\u6240\u4EE5\u65E5\u5FD7\uFF0C\u5982\u679C\u6362\u6210DEBUG\u8868\u793A\u8F93\u51FADEBUG\u4EE5\u4E0A\u7EA7\u522B\u65E5\u5FD7
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
#mbaits
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

spring集成springMVC  spring-mvc.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                        http://www.springframework.org/schema/mvc  
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 自动扫描该package,使SpringMVC认为包下使用@controller注解的类就是控制器 -->
    <context:component-scan base-package="com.lee.user.controller" />

    <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter" />   <!-- JSON转换器 -->
            </list>
        </property>
    </bean>

    <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 说明:这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
        <property name="prefix" value="../jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- 此处为配置文件上传配置  -->
    <bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <!-- 默认编码 -->
        <property name="defaultEncoding" value="utf-8" />  
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000" />  
        <!-- 内存中的最大值 -->
        <property name="maxInMemorySize" value="40960" />  
    </bean> 

</beans>

spring集成mybatis,spring-mybatis.xml(相当于applicationContext.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                        http://www.springframework.org/schema/mvc  
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <!-- 自动扫描 -->
    <context:component-scan base-package="com.lee.user" />
    <!-- 引入jdbc配置文件 -->
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties" />
    </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
    </bean>

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/lee/user/mapper/*.xml"></property>
    </bean>

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.lee.user.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

</beans>

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"
    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>Archetype Created Web Application</display-name>

    <!-- Spring和mybatis的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mybatis.xml</param-value>
    </context-param>

    <!-- 编码过滤器 -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Spring监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 防止Spring内存溢出监听器 -->
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>

    <!-- Spring MVC servlet -->
    <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:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- add   解决由于采用spring的过滤器,导致页面引用的JS、images、CSS发生找不到的错误;
              也可以用使用spring mvc 的 <mvc:resources /> 注解 用来处理静态文件 --> 
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
     </servlet-mapping>
     <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
     </servlet-mapping>
    <!-- end   springMVC有个拦截器会拦截js css这些引用文件,配置取消拦截 -->
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

八. Oracle数据库建表语句:

-- Create table
create table USERS
(
  username VARCHAR2(20),
  password VARCHAR2(20),
  age      NUMBER(10),
  truename VARCHAR2(20),
  email    VARCHAR2(20),
  phone    VARCHAR2(20),
  rolename VARCHAR2(20),
  id       NUMBER(10)
)

九. 项目效果:

Tomcat启动项目后,起始页index.jsp效果如下:


点击最后一个按钮即到了我们需要的用户管理页面:


点击增加按钮:


OK,结束。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值