您的位置:首页 > 其它

过滤器基础以及在servlet中的应用

2017-04-07 19:02 337 查看
编写过滤的步骤
1、编写一个类,实现javax.servlet.Filter接口,这样的类一般称之为过滤器类
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("FilterDemo1拦截了");
chain.doFilter(request, response);//放行
}
2、在web.xml中进行配置,要拦截哪些资源。
<filter>
<filter-name>FilterDemo1</filter-name>
<filter-class>cn.itcast.filter.FilterDemo1</filter-class>
 </filter>
 <filter-mapping>
<filter-name>FilterDemo1</filter-name>
<url-pattern>/*</url-pattern>
 </filter-mapping>
 

过滤器的执行过程
多个过滤器的拦截顺序是按照web.xml中filter-mapping元素的出现顺序进行拦截的。

过滤器只会被初始化一次,应用被加载时就完成了初始化。

过滤器的高级配置
<filter-mapping>
<filter-name>FilterDemo3</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher> 默认情况。如果写了另外一种情况,默认的就没有了
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
 </filter-mapping>

下面是在servlet中的应用的一个小例子:

package deng;

import java.io.*;   

import java.sql.*;

import javax.servlet.*;

import javax.servlet.http.*;

import hu.ZcBean;    

public class ZcSevlet extends HttpServlet implements Filter{
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("拦截了");  
chain.doFilter(request,response);
System.out.println("放行了");
  
}  
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
ZcBean zcbean = null;
try {  
zcbean = (ZcBean)request.getAttribute("ZcBean");
if(zcbean == null) {
zcbean = new ZcBean();//创建ZcBean的一个对象
request.setAttribute("zcbean", zcbean);
}   
}  catch(Exception e) {
zcbean = new ZcBean();
request.setAttribute("zcbean", zcbean);

  }
try { 
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
} catch(Exception e) { } 
String dataBase = request.getParameter("dataBase");//拿到我们要访问的数据库的名字跟表的名字
String tableName = request.getParameter("tableName");
String name = request.getParameter("yhm");//拿到注册的用户名跟密码
String word = request.getParameter("mm");
if((name == null) || (word == null)) {
return ;
}         
double n = Double.parseDouble(name);//将拿到的(文本)字符型用户名跟密码转成double型的,便于录入数据库中
double m = Double.parseDouble(word);
Connection con;
Statement sql; 
ResultSet rs;  
try {  
  String uri = "jdbc:mysql://127.0.0.1/" + dataBase;
  con = DriverManager.getConnection(uri,"root","961102");
  sql = con.createStatement();
  //设定用户名只能是自己的学号  这样才可以进行注册  
  rs = sql.executeQuery("select xh from class where xh =" + n);
  rs.next();
  while(rs.next()) {
  if(rs.getString(1).equals(name)) {
  String a = "update" + "\t" +  tableName + "\t" + "set yhm = " + n +"\t" + "where xh =" + n;
  String b = "update" + "\t" +  tableName + "\t" + "set mm = " + m + "\t" + "where xh =" + n ;
  sql.executeUpdate(a);
  sql.executeUpdate(b); 
  con.close();
  //注册成功,将注册信息传给javabean  然后在另一个jsp页面中进行显示
  zcbean.setBackNews("恭喜你,注册成功!!!");
  zcbean.setUsername(name);  
  zcbean.setPassword(word);    
  RequestDispatcher dispatcher = request.getRequestDispatcher("zcrecord.jsp");
  dispatcher.forward(request, response);  
   }
  } 
  zcbean.setBackNews("注册失败!");
  zcbean.setUsername("用户名有误!");  
  zcbean.setPassword(word);          
  RequestDispatcher dispatcher = request.getRequestDispatcher("zcrecord.jsp");
  dispatcher.forward(request, response);  
} catch(SQLException e) {
System.out.println(e);
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {
doPost(request,response);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: