过滤器基础以及在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
}
}
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
}
}
相关文章推荐
- Servlet过滤器机制分析及应用(一)
- 企业级应用中的Applet和Servlet的通信-Java基础-Java-编程开发
- 本应用是基于淘宝开放平台(TOP)API以及Google Map JavaScript API的基础上实现的一个自用型淘宝买家应用。
- Servlet 过滤器应用实例一
- J2EE应用讲解(2)——Servlet基础理论
- servlet基础(Tomcat的配置和应用的建立)
- web里面Servlet高级应用的基础介绍
- JSP基础语法之十四:Servlet过滤器,编码过滤器、验证登陆状态过滤器
- Servlet过滤器基础
- Servlet 过滤器应用实例三 记录客户端主机信息的Filter
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
- Servlet的应用----servlet基础
- Servlet过滤器机制分析及应用
- Java_乔晓松_Servlet--ServletContext的总结以及应用实例
- J2EE应用讲解(2)——Servlet基础理论
- Websphere 入门基础 第九课 IBM WebSphere Studio实验以及应用开发实验的设置指导
- Servlet简介 以及servlet一些细节 servletconfig servletcontext 的几个应用
- Servlet对象以及对象的应用
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
- java基础数组的定义与初始化以及集合框架的应用