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的重写以及如何利用它来解决乱码问题和过滤敏感字符。 首先,让我们深入理解Servlet Filter的工作原理。Servlet Filter是一个实现了`javax.servlet...
在Java Web开发中,`Servlet`、`Filter`和`Listener`是三个核心组件,它们在构建动态Web应用程序中扮演着重要角色。本篇将详细阐述这三个概念以及它们的工作原理和应用场景。 首先,我们来了解`Servlet`。Servlet是...
4. **Filter和FilterChain**:Servlet API还引入了过滤器(Filter)的概念,允许开发者在请求到达目标Servlet之前或之后进行拦截和处理。FilterChain则代表了一组按顺序调用的Filter,可以串联起来执行。 5. **...
7. **Filter和FilterChain接口**:Servlet API也包含了过滤器(Filter)机制,允许在请求到达Servlet之前进行拦截和处理,如进行权限检查、数据转换等。FilterChain接口则用于管理和执行一系列过滤器。 8. **...
【标题】"j2EE Servlet API" 在Java世界中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署企业级应用...在实际开发中,还需要配合Filter、Listener等其他组件,以实现更复杂的逻辑和优化性能。
在这个名为“servlet简单小练习”的压缩包文件中,包含了几个关于Servlet的简单示例,包括servlet_listener、servlet_resourceaccess、servlet_filter以及一个名为“servlet”的综合练习。 1. **servlet_listener**...
而"org"可能包含如Apache开源组织或其他第三方库的源代码,它们可能提供了额外的功能,如过滤器(Filter)、监听器(Listener)等,这些都扩展了Servlet的基本功能。 学习和分析这些源代码可以帮助我们深入理解...
6. **过滤器Filter和FilterChain**: Filter接口允许开发者在Servlet处理请求之前或之后执行一些逻辑,例如认证、日志记录或内容转换。FilterChain接口则用于管理一系列过滤器的执行顺序。 7. **请求(Request)和响应...
7. **过滤器(Filter)**:Servlet API还提供了`Filter`接口,允许在请求到达Servlet之前进行预处理,或者在响应返回给客户端之后进行后处理。 8. **监听器(Listener)**:监听器如`ServletContextListener`、`...
5. **Filter**:Servlet API还包括Filter接口,允许开发者创建过滤器来拦截和修改请求或响应。过滤器可以在Servlet处理请求之前和之后执行自定义逻辑,例如登录检查、内容编码转换等。通过`<filter>`和`<filter-...
8. **Filter接口和FilterChain类**:过滤器(Filter)是Servlet API中的一个重要概念,它可以在请求到达Servlet之前或之后进行拦截处理,例如实现认证、日志记录等功能。FilterChain则用于管理多个过滤器的执行顺序...
5. **过滤器Filter**: Filter接口允许在请求到达Servlet之前和离开Servlet之后进行拦截,实现数据预处理、安全控制等功能。例如,`FilterChain`对象可以用来将请求传递给下一个过滤器或Servlet。 6. **会话管理**: ...
6. **过滤器(Filter)**:Servlet API也提供了`Filter`接口,允许在请求到达Servlet之前进行预处理,或在响应离开Servlet之后进行后处理。过滤器可以实现如登录检查、GZIP压缩、字符编码转换等功能。 7. **监听器...
7. **Filter** 和 **FilterChain**:Servlet API还支持过滤器(Filter)机制,允许开发者在请求到达Servlet之前对其进行拦截和处理,如进行权限检查、数据转换等。FilterChain则用于在多个Filter之间传递控制。 8. ...
6. **过滤器(Filter)**:Servlet API 2.5引入了Filter接口,允许在请求到达Servlet之前或之后进行拦截和处理。Filter可以用来实现权限控制、数据转换、日志记录等功能。通过`doFilter()`方法,Filter链可以按顺序...
《Java Servlet Programming》第二版是Java Web开发领域的一本经典著作,主要涵盖了使用Java Servlet API进行服务器端编程的各种技术和实践。这本书深入浅出地讲解了如何利用Servlet技术构建动态、高性能的Web应用...
8. **Filter**和**FilterChain**:过滤器(Filter)允许你在请求到达Servlet之前或离开Servlet之后进行拦截处理,例如身份验证、数据转换等。FilterChain则允许你链式调用多个过滤器。 9. **Servlet生命周期**:...
9. **Filter和Listener**:Servlet API还提供了Filter和Listener接口,Filter用于拦截和修改请求或响应,Listener则可以监听Web应用中的特定事件,如会话创建、销毁等。 10. **异步Servlet**:从Servlet 3.0版本...
这个文件包含了Servlet API 3.0的源代码,包括Servlet接口,Filter,Listener等关键类。开发者可以通过阅读这些源码了解Servlet容器如何初始化Servlet,处理请求,以及如何调度Filter链。 **javax.servlet.jsp-...