Servlet基础(一)——servlet,filter,listener

Java 发表评论


servlet技术是web开发中的一个核心部分,它包括3个重要部分:servlet开发,filter开发,listener开发。

什么是Servlet?
Servlet是运行在服务器端的Java应用程序,就是一个简单的Java类,可以用来处理请求和发送响应,因此可以与数据库进行交互、响应客户请求,还可以用来生成动态的Web页面。它与传统java应用程序的区别是它是由web服务器来进行加载和运行。

与CGI(公共网关接口)
在servlet之前,通常会使用CGI来完成客户请求等操作。
在这里插入图片描述
心得:Servlet一般用于后台代码开发,用来调用DAO或者业务逻辑层来完成数据库操作,还可以用来接收表单参数和完成页面跳转。

Servlet的开发
1.写java类实现HTTPServlet接口
2.在web.xml中配置
更多信息请参考:关于servlet的接口,方法等的进一步讲解

Filter是Servlet2.3新增的功能。
在这里插入图片描述
Filter也是一个Java类,必须实现Filter接口,必须实现Filter接口中定义的init()方法,doFilter()方法和destroy()方法。需要在web.xml中配置该Filter。
IP地址过滤器

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

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 FilterDemo implements Filter{
	protected FilterConfig filterConfig;
	protected String ip;

	public void destroy() {
		
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		String remoteIP = request.getRemoteAddr();
		if(remoteIP.equals(ip)) {
			response.setContentType("text/html;charset=UTF-8");
			response.setCharacterEncoding("gb2312");
			PrintWriter out = response.getWriter();
			out.print("该IP地址被禁用,请联系管理员!");
		}else {
			chain.doFilter(request, response);//向下传递
		}
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;					//设置属性filterConfig
		this.ip = this.filterConfig.getInitParameter(ip);	//获得初始化参数ip
	}
	
}

<filter>															<!-- 定义filter本身 -->
  	<filter-name>IPFilter</filter-name>								<!-- 指定filter名 -->
  	<filter-class>org.mybatis.config.FilterDemo</filter-class>		<!-- 指定filter类的全名 -->
  	<init-param>													<!-- 初始化参数 -->
  		<param-name>ip</param-name>
  		<param-value>127.0.0.1</param-value>
  	</init-param>
  </filter>
  
  <filter-mapping>													<!-- 定义filter映射信息 -->
  	<filter-name>IPFilter</filter-name>								<!-- 指定filter名称 -->
  	<url-pattern>/*</url-pattern>									<!-- 指定过滤URL -->
  </filter-mapping>

Listener技术同样也是Servlet2.3新增的功能,中文名监听器。
通过Listener可以监听容器中某一执行动作,并根据其要求做出相应的响应。

实例:servlet上下文监听器

package org.mybatis.config;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ListenerDemo implements ServletContextListener{

	/*监听servlet上下文的销毁*/
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("servletContext销毁");
	}

	/*监听servlet上下文的创建*/
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("servletContext创建");
	}
	
}

配置web.xml

<listener>
  	<listener-class>org.mybatis.config.ListenerDemo</listener-class>
  </listener>

发表评论

邮箱地址不会被公开。 必填项已用*标注

昵称 *