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

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>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值