`

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>

分享到:
评论

相关推荐

    servlet_filter.rar_Servlet filter_重写filter

    在这个压缩包“servlet_filter.rar”中,我们聚焦于Servlet Filter的重写以及如何利用它来解决乱码问题和过滤敏感字符。 首先,让我们深入理解Servlet Filter的工作原理。Servlet Filter是一个实现了`javax.servlet...

    servlet_filter_listener

    在Java Web开发中,`Servlet`、`Filter`和`Listener`是三个核心组件,它们在构建动态Web应用程序中扮演着重要角色。本篇将详细阐述这三个概念以及它们的工作原理和应用场景。 首先,我们来了解`Servlet`。Servlet是...

    servlet-api.rar_java servlet_servlet api_servlet api hmtl_servle

    4. **Filter和FilterChain**:Servlet API还引入了过滤器(Filter)的概念,允许开发者在请求到达目标Servlet之前或之后进行拦截和处理。FilterChain则代表了一组按顺序调用的Filter,可以串联起来执行。 5. **...

    servlet-api_servlet_

    7. **Filter和FilterChain接口**:Servlet API也包含了过滤器(Filter)机制,允许在请求到达Servlet之前进行拦截和处理,如进行权限检查、数据转换等。FilterChain接口则用于管理和执行一系列过滤器。 8. **...

    j2ee_servlet_api.zip免费下载

    【标题】"j2EE Servlet API" 在Java世界中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署企业级应用...在实际开发中,还需要配合Filter、Listener等其他组件,以实现更复杂的逻辑和优化性能。

    servlet简单小练习

    在这个名为“servlet简单小练习”的压缩包文件中,包含了几个关于Servlet的简单示例,包括servlet_listener、servlet_resourceaccess、servlet_filter以及一个名为“servlet”的综合练习。 1. **servlet_listener**...

    servlet_src

    而"org"可能包含如Apache开源组织或其他第三方库的源代码,它们可能提供了额外的功能,如过滤器(Filter)、监听器(Listener)等,这些都扩展了Servlet的基本功能。 学习和分析这些源代码可以帮助我们深入理解...

    servlet-api.rar_java servlet_servlet api_servlet-api

    6. **过滤器Filter和FilterChain**: Filter接口允许开发者在Servlet处理请求之前或之后执行一些逻辑,例如认证、日志记录或内容转换。FilterChain接口则用于管理一系列过滤器的执行顺序。 7. **请求(Request)和响应...

    servlet_src源代码

    7. **过滤器(Filter)**:Servlet API还提供了`Filter`接口,允许在请求到达Servlet之前进行预处理,或者在响应返回给客户端之后进行后处理。 8. **监听器(Listener)**:监听器如`ServletContextListener`、`...

    servlet_api文档

    5. **Filter**:Servlet API还包括Filter接口,允许开发者创建过滤器来拦截和修改请求或响应。过滤器可以在Servlet处理请求之前和之后执行自定义逻辑,例如登录检查、内容编码转换等。通过`&lt;filter&gt;`和`&lt;filter-...

    Servlet_API帮助文档

    8. **Filter接口和FilterChain类**:过滤器(Filter)是Servlet API中的一个重要概念,它可以在请求到达Servlet之前或之后进行拦截处理,例如实现认证、日志记录等功能。FilterChain则用于管理多个过滤器的执行顺序...

    servlet_api_docs

    5. **过滤器Filter**: Filter接口允许在请求到达Servlet之前和离开Servlet之后进行拦截,实现数据预处理、安全控制等功能。例如,`FilterChain`对象可以用来将请求传递给下一个过滤器或Servlet。 6. **会话管理**: ...

    servlet_api_docs.chm

    6. **过滤器(Filter)**:Servlet API也提供了`Filter`接口,允许在请求到达Servlet之前进行预处理,或在响应离开Servlet之后进行后处理。过滤器可以实现如登录检查、GZIP压缩、字符编码转换等功能。 7. **监听器...

    Servlet_API_中文.rar

    7. **Filter** 和 **FilterChain**:Servlet API还支持过滤器(Filter)机制,允许开发者在请求到达Servlet之前对其进行拦截和处理,如进行权限检查、数据转换等。FilterChain则用于在多个Filter之间传递控制。 8. ...

    Servlet_API_2.5

    6. **过滤器(Filter)**:Servlet API 2.5引入了Filter接口,允许在请求到达Servlet之前或之后进行拦截和处理。Filter可以用来实现权限控制、数据转换、日志记录等功能。通过`doFilter()`方法,Filter链可以按顺序...

    Java_Servlet_Programming__2nd_Edition.rar

    《Java Servlet Programming》第二版是Java Web开发领域的一本经典著作,主要涵盖了使用Java Servlet API进行服务器端编程的各种技术和实践。这本书深入浅出地讲解了如何利用Servlet技术构建动态、高性能的Web应用...

    Servlet_API中文手册

    8. **Filter**和**FilterChain**:过滤器(Filter)允许你在请求到达Servlet之前或离开Servlet之后进行拦截处理,例如身份验证、数据转换等。FilterChain则允许你链式调用多个过滤器。 9. **Servlet生命周期**:...

    servlet_02_1125.rar

    9. **Filter和Listener**:Servlet API还提供了Filter和Listener接口,Filter用于拦截和修改请求或响应,Listener则可以监听Web应用中的特定事件,如会话创建、销毁等。 10. **异步Servlet**:从Servlet 3.0版本...

    javax.servlet3.0 javax.servlet_jsp2.0源码

    这个文件包含了Servlet API 3.0的源代码,包括Servlet接口,Filter,Listener等关键类。开发者可以通过阅读这些源码了解Servlet容器如何初始化Servlet,处理请求,以及如何调度Filter链。 **javax.servlet.jsp-...

Global site tag (gtag.js) - Google Analytics