Servlet与Filter

Servlet

1-      servlet类继承自HttpServlet父类, 父类地址为javax.servlet.http.httpServlet

2-      该类的对象由Web服务器创建,并调用方法. 调用方法时传参分别为:

HttpServletRequest 和HttpServletResponse

与HttpServlet类同包

3-      其中的方法主要是对request对象和response对象的操作,具体如下:

package servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
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 ServletTest extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// servlet中方法练习
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		req.setAttribute("key", "value");
		req.getRequestDispatcher("url").forward(req	, resp);
		resp.sendRedirect("url");
		HttpSession session = req.getSession();
		ServletContext application = session.getServletContext();
		
	}
}
Filter

1-      过滤功能,对访问某目标目录的所有访问进行检查

2-      实现了Filter接口,接口包为: javax.servlet.Filter

3-      该类的对象由Web服务器创建,并调用方法. 调用方法时传参分别为:

ServletRequest ,ServletResponse 和FilterChain

与Filter类同包

4-      检索代码在doFilter方法中实现,;

5-      过滤通过用FilterChain类型对象的方法doFilter()进入访问对象;

6-      Tomcat调用Filter类, 使用时最先加载类中的init方法,再加载doFilter方法;

package filter;
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
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 FilterPractice implements Filter{
	private String code;
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		// 过滤代码
		res.setCharacterEncoding(code);//设定字符集
		HttpServletRequest request = (HttpServletRequest)req;//转为子类对象
		HttpServletResponse response = (HttpServletResponse)res;//转为子类对象
		HttpSession session = request.getSession();//只有子类对象能够创建session
		ServletContext application = session.getServletContext();//创建application		
		chain.doFilter(request, response);//过滤通过后,通行操作,将request和response传递到用户访问地址.
		
		
	}

	public void init(FilterConfig fcg) throws ServletException {
		// TODO Auto-generated method stub
		code = fcg.getInitParameter("code");
		/**
		 * 此处是读取XML文件中的初始化属性语句,需要在XML中有相应的语句,本例中对应的XML语句为:
		 *   <filter>  	
		 *		<filter-name>encode</filter-name>  
				<filter-class>com.kero99.wp.filter.EncodingFilter</filter-class>  
				<init-param>  		
					<param-name>code</param-name>
					<param-value>utf-8</param-value>
  				</init-param>
  			</filter>  
  			<filter-mapping>
  				<filter-name>encode</filter-name>
  				<url-pattern>/*</url-pattern>
  			</filter-mapping>
		 */
	}
	public void destroy() {
		// 对象消除时自动使用
	}

}



 
 

猜你喜欢

转载自blog.csdn.net/wangxin1949/article/details/79006739