Servlet_Filter

package com.amaker.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;

/*
 * filter是自动执行的,不用你调用,当你访问目标资源(<url-pattern>/admin/*</url-pattern>)时该filter会执行过滤
 */
public class MyFilter implements Filter {

	@Override
	public void destroy() {
		

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("我的filter执行了.....");
		chain.doFilter(request, response);

	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		

	}

}


package com.amaker.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;

public class EncodingFilter implements Filter {

	@Override
	public void destroy() {
		

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		
		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		

	}

}



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

public class SessionFilter implements Filter {

	@Override
	public void destroy() {
		
	}

	@Override
	public void doFilter(ServletRequest r, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
	     HttpServletRequest request = (HttpServletRequest)r;
	     HttpServletResponse response = (HttpServletResponse)resp;
	     
	     HttpSession session = request.getSession();
	     String user = (String)session.getAttribute("User");
	     
	     if(user != null && user.equals("")) {
	    	 chain.doFilter(r, resp);
	     }else {
	    	 String msg = "你还没有登录!";
	    	 request.setAttribute("error", msg);
	    	 
	    	 request.getRequestDispatcher("/Login.jsp").forward(request, response);
	     }
	     
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		

	}

}



package com.amaker.servlet;

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

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

public class LoginServlet extends HttpServlet {

	/**
	 * Constructor of the object. 
	 */
	public LoginServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String username = request.getParameter("username");
		System.out.println(username);
		
		HttpSession session = request.getSession();
		session.setAttribute("User", username);
		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print(username);
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<filter>
	     <filter-name>myfilter</filter-name>
	     <filter-class>com.amaker.filter.MyFilter</filter-class>
	</filter>
	
	<filter-mapping>
		 <filter-name>myfilter</filter-name>
		 <url-pattern>/admin/*</url-pattern>
	</filter-mapping>
	
	
	<filter>
	     <filter-name>encodingfilter</filter-name>
	     <filter-class>com.amaker.filter.EncodingFilter</filter-class>
	</filter>
	
	<filter-mapping>
		 <filter-name>encodingfilter</filter-name>
		 <url-pattern>/*</url-pattern>
	</filter-mapping>
	
		<filter>
	     <filter-name>sf</filter-name>
	     <filter-class>com.amaker.filter.SessionFilter</filter-class>
	</filter>
	
	<filter-mapping>
		 <filter-name>sf</filter-name>
		 <url-pattern>/pages/*</url-pattern>
	</filter-mapping>
	
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.amaker.servlet.LoginServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/servlet/LoginServlet</url-pattern>
  </servlet-mapping>
	
</web-app>

猜你喜欢

转载自diaochenlong2.iteye.com/blog/1829253