初试springmvc+filter实现增删改查

1 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
   <filter>
  	<filter-name>checkLogin</filter-name>
  	<filter-class>com.aaa.mvc.filter.CheckLoginFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>checkLogin</filter-name>
  	<url-pattern>/dept/*</url-pattern>
  </filter-mapping>
    <!-- 解决post提交乱码 开始 -->
  <filter>
     <filter-name>charSetFilter</filter-name>
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
     <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
     </init-param>
  </filter>
  <filter-mapping>
      <filter-name>charSetFilter</filter-name>  
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- 解决post提交乱码 结束-->
  <!-- 配置总调度器 开始 -->
  <!-- 总调度器 
  		作用1 总的调度
  		作用2 加载配置文件
  		默认加载servlet-name开头,后缀为-servlet.xml的同级目录的配置文件
  		springmvc-servlet.xml
  		
  		DispatcherServlet默认使用WebApplicationContext作为上下文,
  		Spring默认配置文件为“/WEB-INF/[servlet名字]-servlet.xml”。
   -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 加载自定义配置文件 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-config.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!-- 
  		/ 拦截所有请求 
  		*.do 拦截所有以do结尾的请求
  	-->
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- 配置总调度器 结束 -->
  
 <!-- 静态资源免过滤 开始 
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>default</servlet-name>
  	<url-pattern>*.js</url-pattern>
  	<url-pattern>*.css</url-pattern>
  	<url-pattern>*.png</url-pattern>
  	<url-pattern>*.jpg</url-pattern>
  	<url-pattern>*.jpeg</url-pattern>
  	<url-pattern>*.gif</url-pattern>
  </servlet-mapping>
  静态资源免过滤 结束 -->
</web-app>

2 springmvc-config.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: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.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 映射处理器,适配处理器如果不配置,调用默认的 -->
<!-- 
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> 
-->
<!-- 开启包扫描 -->
<context:component-scan base-package="com.aaa.mvc.*"></context:component-scan>
<!-- 开启springmvc的注解驱动 annotation 注解 driven 驱动 识别controller中相关的注解 -->
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/jsp/"></property>
	<property name="suffix" value=".jsp"></property>
</bean>

</beans>

3 过滤器 CheckLoginFilter

package com.aaa.mvc.filter;

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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *@className:CheckLoginFilter.java
 *@discripton:
 *@author:wangzhenbao
 *@createTime:2018-9-28下午2:08:25
 *@version:1.0
 */
@WebFilter(filterName="checkLogin",urlPatterns="/dept/*")
public class CheckLoginFilter implements Filter {

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

	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
		
		HttpServletRequest req = (HttpServletRequest)arg0;
		HttpServletResponse resp = (HttpServletResponse)arg1;
		/**
		 * getSession()
		 * 检测当前时候是否有session存在,如果不存在则创建一个,如果存在就返回当前的
		 * Session.setAttibute(String key ,Object obj)
		 * Session对象中含有的关键字是key的对象
		 * req.getSession().getAttribute("username")
		 * request.getsession()获得session 对象 
		 * 再调用它的getAttibute(String key)方法来获得含有关键字"username"的对象!
		 * 
		 */
		Object user = req.getSession().getAttribute("username");
		System.out.println("进入过滤器");
		//获取请求地址
		String requestURI = req.getRequestURI();//uri 只获取项目名称之后的
		StringBuffer requestURL = req.getRequestURL();//url 获取是完整的定位路径
		/*if(requestURI.contains("jsp")||requestURI.contains("empLogin")||user!=null){
			//因为过滤器拦截了所有请求,我们把请求地址中含有jsp和userLogin的放弃拦截
			arg2.doFilter(arg0, arg1);
		}else{
			resp.sendRedirect(req.getContextPath()+"/jsp/emp/login.jsp");
		}*/
		//如果为空说明没登陆
		if(user==null){
			//重定向
			resp.sendRedirect(req.getContextPath()+"/jsp/emp/login.jsp");
		}else{
			//让程序继续运行
			arg2.doFilter(arg0, arg1);
		}
	}

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

}


4 表现层 EmpController

package com.aaa.mvc.controller;


import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.aaa.mvc.entity.Emp;
import com.aaa.mvc.service.EmpService;

/**
 *@className:UserController.java
 *@discripton:
 *@author:wangzhenbao
 *@createTime:2018-9-27上午8:36:25
 *@version:1.0
 */
@Controller
@RequestMapping("/a")//通用url映射配置
public class EmpController {

	@Autowired
	private EmpService empservice;
	
	/**
	 * 模拟用户登录
	 * 默认形参对象可以是任何servlet里的任何对象
	 */

	@RequestMapping("/empLogin")
	public String empLogin(String username,String password,Model model,HttpServletRequest req,HttpServletResponse resp,HttpSession session){
		
		if("a".equals(username)&&"b".equals(password)){
			session.setAttribute("username", username);
			return "redirect:/dept/list.do";
		}else{
			model.addAttribute("errorInfo", "用户名或者密码错误");
			return "emp/login";
		}
	}
	
	
	
	/**
	 * 用户列表
	 * @return
	 */
	@RequestMapping("/list")//窄化映射请求配置
	public ModelAndView empList(){
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("empList", empservice.selEmp());
		//设置逻辑视图名
		modelAndView.setViewName("emp/emplist");
		return modelAndView;
	}
	/**
	 * 增加用户
	 * @param model
	 * @param paramMap
	 * @return
	 */
	@RequestMapping("/add")
	public String empAdd(Model model,@RequestParam Map paramMap){
		
		int res = empservice.insertEmp(paramMap);
		if(res!=0){
			model.addAttribute("info", "添加成功!!!");
		}else{
			model.addAttribute("info", "添加失败!!!");
		}
		
		return "forward:list.do";//转发 地址栏地址不发生变化 发生服务器端 转发可以把request参数继续传递
		//return "redirect:list.do";//重定向 地址栏地址发生变化 发生客户端 转发可以把request参数继续传递
	}
	/**
	 * 跳转更新
	 * 通过id查询列表
	 * 普通属性传值时,形参名称必须和请求携带的参数名称完全一致,最好使用封装类,避免参数为null时报错
	 * byte Byte short Short int Integer long Long char Character bollean Bollean
	 * float Float double Double 
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping("/toUpdate")
	public String toUpdate(Model model,Integer id){
		
		model.addAttribute("a", empservice.selEmpById(id));
		return "emp/editEmp";
	}
	
	@RequestMapping("/edit")
	public String empEdit(@RequestParam Map paramMap){
		
		empservice.updateEmp(paramMap);
		return "forward:list.do";
	}
	
	@RequestMapping("/editt")
	public String empEditt(Emp emp){
		empservice.updateEmp(emp);
		return "forward:list.do";
	}
	/**
	 * 删除
	 * @param model
	 * @param id
	 * @return
	 * 路径变量的用法
	 */
	@RequestMapping("/del/{id}-{ename}")
	public String delete(Model model,@PathVariable Integer id,@PathVariable String ename){
		System.out.println(id+","+ename);
		int result=empservice.deleteEmp(id);
		if(result!=0){
			model.addAttribute("info", "删除成功");
		}else {
			model.addAttribute("info", "删除失败");
		}
		return "forward:/a/list.do";
	}
	
	/*public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		// TODO Auto-generated method stub
		String userN = request.getParameter("ename");
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		if("a".equals(userN)){
			out.print("true");
		}else{
			out.print("false");
		}
		out.flush();
		out.close();
	}
	
	*/

	
}


5 服务层 EmpService和EmpServiceImpl

package com.aaa.mvc.service;

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

import com.aaa.mvc.entity.Emp;

public interface EmpService {

	int insertEmp(Map map);
	
	List<Map<String,Object>> selEmp();
	List<Map<String,Object>> selEmpById(Integer id);
	
	int deleteEmp(Integer id);
	
	int updateEmp(Map map);

	int updateEmp(Emp emp);
	
}

package com.aaa.mvc.service.impl;

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

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

import com.aaa.mvc.dao.EmpDao;
import com.aaa.mvc.entity.Emp;
import com.aaa.mvc.service.EmpService;
import com.aaa.mvc.util.BaseDao;

@Service
public class EmpServiceImpl implements EmpService{

	@Autowired
	private EmpDao empdao;
	
	public int insertEmp(Map map) {
		
		return empdao.insertEmp(map);
	}
	
	public List<Map<String, Object>> selEmp() {
		
		return empdao.selEmp();
	}

	@Override
	public int deleteEmp(Integer id) {
		// TODO Auto-generated method stub
		return empdao.deleteEmp(id);
	}

	@Override
	public int updateEmp(Map map) {
		// TODO Auto-generated method stub
		return empdao.updateEmp(map);
	}

	@Override
	public List<Map<String, Object>> selEmpById(Integer id) {
		// TODO Auto-generated method stub
		return empdao.selEmpById(id);
	}

	@Override
	public int updateEmp(Emp emp) {
		// TODO Auto-generated method stub
		return empdao.updateEmp(emp);
	}


	
}


6 持久层 EmpDao和EmpDaoImpl

package com.aaa.mvc.dao;

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

import com.aaa.mvc.entity.Emp;

public interface EmpDao {

	int insertEmp(Map map);
	
	List<Map<String,Object>> selEmp();
	List<Map<String,Object>> selEmpById(Integer id);
	
	int deleteEmp(Integer id);
	
	int updateEmp(Map map);
	
	int updateEmp(Emp emp);

}

package com.aaa.mvc.dao.impl;

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

import org.springframework.stereotype.Repository;

import com.aaa.mvc.dao.EmpDao;
import com.aaa.mvc.entity.Emp;
import com.aaa.mvc.util.BaseDao;

@Repository
public class EmpDaoImpl implements EmpDao{

	public int insertEmp(Map map) {
		String sql = "insert into emp(empnum,ename,sex)values(?,?,?)";
		Object[] params = {map.get("empnum"),map.get("ename"),map.get("sex")};
		int row = BaseDao.insertAndUpdateAndSelect(params, sql);
		return row;
	}

	public List<Map<String,Object>> selEmp() {
		String sql = "select id,empnum,ename,sex from emp";
		Object[] params = {};
		List<Map<String,Object>> a = BaseDao.selectMap(params, sql);
		return a;
	}
	
	public int deleteEmp(Integer id) {
		// TODO Auto-generated method stub
		return BaseDao.insertAndUpdateAndSelect(new Object[]{id},"delete from emp where id=?" );
	}

	@Override
	public int updateEmp(Map map) {
		
	int row = BaseDao.insertAndUpdateAndSelect(new Object[]{map.get("empnum"),map.get("ename"),map.get("sex"),map.get("id")},
				"update emp set empnum=?,ename=?,sex=? where id=?");

		return row;
	}

	@Override
	public List<Map<String, Object>> selEmpById(Integer id) {
		// TODO Auto-generated method stub
		String sql = "select id,empnum,ename,sex from emp where id = ?";
		Object[] params = {id};
		List<Map<String,Object>> a = BaseDao.selectMap(params, sql);
		return a;
	}

	@Override
	public int updateEmp(Emp emp) {
		int row = BaseDao.insertAndUpdateAndSelect(new Object[]{emp.getEmpnum(),emp.getEname(),emp.getSex(),emp.getId()},
				"update emp set empnum=?,ename=?,sex=? where id=?");
		return row;
	}
	
	

	
}


7 实体Emp

package com.aaa.mvc.entity;

public class Emp {

	private Integer id;
	private Integer deptid;
	private Integer sal;
	private Integer price;
	private String empnum;
	private String sex;
	private String ename;
		

	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getDeptid() {
		return deptid;
	}
	public void setDeptid(Integer deptid) {
		this.deptid = deptid;
	}
	public Integer getSal() {
		return sal;
	}
	public void setSal(Integer sal) {
		this.sal = sal;
	}
	public Integer getPrice() {
		return price;
	}
	public void setPrice(Integer price) {
		this.price = price;
	}
	public String getEmpnum() {
		return empnum;
	}
	public void setEmpnum(String empnum) {
		this.empnum = empnum;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
		
}

8 addEmp.jsp/editEmp.jsp/emplist.jsp/login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'addEmp.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
	/* $(function(){
		$("#ena").blur(function(){
			var a = $.trim($(this).val());
			if(a == ''){
				alert("用户名不能为空!");
			}
			$.get(
				"a.do",
				{ena:a},
				function(data){
					if(data=='true'){
						$("info").html("名字重复").css("color","red");
						$("sbt").attr("disabled","disabled");
					}else{
						$("info").html("名字可以使用").css("color","green");
						$("sbt").removeAttr("disabled");
					}
				}
				
			)
		});
		
	}); */
</script>
  </head>
  
  <body>
    <form action="a/add.do" method="post">
    	编号:<input name="empnum"><br>
    	姓名:<input name="ename" id="ena"><span id="info"></span><br>
    	性别:<input type="radio" name="sex" value=""><input type="radio" name="sex"  value="" ><br>
    		<input type="submit" id="sbt" value="增加">
    </form>
  </body>
</html>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'editEmp.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
	 <!--  <script type="text/javascript">
	  		$(function(){
	  			if(${a[0].sex=="男"}){
	  				$("#nan").attr("checked",true);
	  			}
	  			if(${a[0].sex=="女"}){
	  				$("#nv").attr("checked",true);
	  			}
	  		});
	  	</script> -->
  </head>
  
  <body>
 	<form action="a/editt.do" method="post" >
    	<c:forEach items="${a}" var="map" varStatus="stat">
    	<input type="hidden" name="id" value="${map.id}"><br>
    		编号:<input name="empnum" value="${map.empnum}"><br>
   			姓名:<input name="ename" value="${map.ename}"><br>
	   		<%-- 性别:	<input name="sex" type="radio" <c:if test="${ map.sex==''}"> checked="checked"</c:if> value="男" id="nan">男
	   				<input name="sex" type="radio" <c:if test="${ map.sex==''}"> checked="checked"</c:if> value="女" id="nv">女<br> --%>
	   		性别:	<input name="sex" type="radio" ${map.sex=='男'?'checked=checked':'' } value="男" id="nan">男
	   				<input name="sex" type="radio" ${map.sex=='女'?'checked=checked':'' } value="女" id="nv">女<br>
   			<input type="submit" value="提交">
    	</c:forEach>
    </form>
 	
  </body>
 </html>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title></title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
<script>
	<%-- function toDel(id){
		if(confirm("你确定要删除么")){
			location.href="<%=path%>/a/del/"+id+"-ccc.do";
		}
	} --%>
</script>
</head>

<body>
	<center>
		${deptList }
		${info }
		<a href="jsp/emp/addEmp.jsp">添加</a>
		<table border="1" width="600px;">
			<tr align="center">
				<td>账号</td>
				<td>姓名</td>
				<td>性别</td>
				<td>操作</td>
			</tr>
			<c:forEach items="${empList}" var="emp">
				<tr align="center">
					<td>${emp.empnum}</td>
					<td>${emp.ename}</td>
					<td>${emp.sex}</td>
					<td>
						<a href="a/toUpdate.do?id=${emp.id }">更新</a>&nbsp; 
						<%-- <a href="javascript:toDel('${emp.id }')">删除</a> --%>
						<%-- <a href="javascript:if(confirm('你确定要删除么')){location.href='<%=path%>/a/del/${emp.id }-ccc.do';}">删除</a> --%>
						<a href="javascript:if(confirm('确认删除吗?')){location.href='a/del/${emp.id}-bbb.do';}">删除</a> 
					</td>
				</tr>
			</c:forEach>
		</table>
	</center>
</body>
</html>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>login</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <form action="a/empLogin.do" method="post">
    <div>${errorInfo}</div>
    	<table>
	    	<tr><td>用户名:</td><td><input type="text" name="username"></td></tr>
	    	<tr><td>密码:</td><td><input type="password" name="password" ></td></tr>
	    	<tr><td colspan="2"><input type="submit"  value="登陆"></td></tr>
	    </table>
    </form>
  </body>
</html>

9 lib下所需jar包

1 fastjson-1.2.49.jar
2 mysql-connector-java-5.1.40.jar

10 BaseDao

package com.aaa.mvc.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class BaseDao {

	private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
	private static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/test?user=root&password=wangzhenbao";
	private static Connection con = null;
	private static PreparedStatement ps = null;
	private static ResultSet rs = null;
	/**
	 * 驱动加载
	 */
	static {
		try {
			Class.forName(DRIVER_CLASS);
		} catch (ClassNotFoundException e) {
			System.out.println("你没有加jar包!");
			e.printStackTrace();
		}
	}
	/**
	 * 获取数据库连接
	 * @return
	 */
	public static Connection getConnection(){
		try {
			con = DriverManager.getConnection(JDBC_URL);
		} catch (SQLException e) {
			System.out.println("你的URL写错了!");
			e.printStackTrace();
		}
		
		return con;
	}
	/**
	 * 增删改
	 * @param params
	 * @param sql
	 * @return
	 */
	public static int insertAndUpdateAndSelect(Object[] params,String sql){
		int row = 0;
		getConnection();
		try {
			ps = con.prepareStatement(sql);
			setParams(params);
			row = ps.executeUpdate();//受影响的行
		} catch (SQLException e) {
			System.out.println("请仔细检查你的增删改!");
			e.printStackTrace();
		}finally{
			closeAll();
		}
		
		
		return row;
	}
	
	/**
	 * 获取数据List<List>
	 */
	
	public static List<List<Object>> selectList(Object[] params,String sql){
		//debug F6 下一步 绿箭头 下一个断点(无断点直接跑完)as ctrl + shift + i
		con = getConnection();
		List<List<Object>> tabList = new ArrayList<List<Object>>();//盒子
		try {
			ps = con.prepareStatement(sql);
			setParams(params);
			rs = ps.executeQuery();
			while(rs.next()){
				List<Object> rowList = new ArrayList<Object>();//行
				for(int i=0;i<rs.getMetaData().getColumnCount();i++){//i<列数
						rowList.add(rs.getObject(i+1));//行里面加数据
				}
				
					tabList.add(rowList);//盒子里加行
			}
		} catch (SQLException e) {
			System.out.println("请仔细检查你的List!");
			e.printStackTrace();
		}finally{
			closeAll();
		}
		return tabList;
	}
	
	/**
	 * 获取数据List<Map>
	 */
	
	public static List<Map<String,Object>> selectMap(Object[] params,String sql){
		List<Map<String,Object>> tabMap = new ArrayList<Map<String,Object>>();
		try {
			con = getConnection();
			ps = con.prepareStatement(sql);
			setParams(params);
			rs = ps.executeQuery();
			while(rs.next()){
				Map<String,Object> rowlist = new HashMap<String,Object>();
				for(int i=0;i<rs.getMetaData().getColumnCount();i++){
					rowlist.put(rs.getMetaData().getColumnName(i+1),rs.getObject(i+1));
				}
					tabMap.add(rowlist);
			}
		} catch (SQLException e) {
			System.out.println("请仔细检查你的Map!");
			e.printStackTrace();
		}finally{
			closeAll();
		}
		return tabMap;
	}
		
	
	/**
	 * 获取主键
	 * @param sql
	 * @param params
	 * @return list
	 */
	public static int getGeneratedKeys(String sql,Object[] params){
		int id = 0;
		getConnection();
		try {
			ps = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			setParams(params);
			ps.executeUpdate();
			rs = ps.getGeneratedKeys();
			while(rs.next()){
				id = rs.getInt(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return id;
	}
	
	/**
	 * 修改参数
	 * @param params
	 */
	public static void setParams(Object[] params){
		if(params==null) return;
		
		for (int i = 0; i < params.length; i++) {
			try {
				ps.setObject(i+1, params[i]);
			} catch (SQLException e) {
				System.out.println("第i+1个参数有误!");
				e.printStackTrace();
			}
		}
	}
	
	
	
	/**
	 * 关闭连接
	 */
	public static void closeAll(){
		try {
				if(rs!=null){
					rs.close();
				}
				if(ps!=null){
					ps.close();
				}
				if(con!=null){
					con.close();
				}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
}

11 如果要加入拦截器 LoginInterCepter

springmvc-config.xml中加入下面代码
 <!-- 配置拦截器 -->
   <mvc:interceptors>
  	 <!-- 自定义登陆拦截器 -->
  	 <mvc:interceptor>
  	 	<!-- 配置拦截的路径 相当于filter <url-pattern> /** 拦截所有  /*拦截一级  /*/*拦截两级-->
  	 	<mvc:mapping path="/*/*.do"/>
  	 	<!-- 配置拦截的具体实现类 相当于filter <filter-class> -->
  	 	<bean class="com.aaa.mvc.interceptor.LoginInterCepter"></bean>
  	 </mvc:interceptor>
  </mvc:interceptors>
编写拦截器代码
package com.aaa.mvc.interceptor;

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

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class LoginInterCepter implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub
		System.out.println("最终要运行的");
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("在视图渲染之前运行");
	}

	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("在处理我们自定义业务之前运行的");
		//获取user
		Object user = arg0.getSession().getAttribute("username");
		if(user==null){
			arg1.sendRedirect(arg0.getContextPath()+"/jsp/login.jsp");
			
			return false;
		}
		return true;
	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值