java过滤器 servlet_java基础篇---Servlet过滤器

packagecom.oumyye.过滤器;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;public class EncodingFilter implementsFilter {private String charSet; //设置字符编码

public void init(FilterConfig config) throwsServletException {this.charSet = config.getInitParameter("charset"); //取得初始化参数

}public voiddoFilter(ServletRequest request, ServletResponse response,

FilterChain chain)throwsIOException, ServletException {

request.setCharacterEncoding(this.charSet); //设置统一编码

}public voiddestroy() {

}

}

配置web.xml文件

encoding

com.oumyye.过滤器.EncodingFilter

charset

UTF-8

encoding

/*

过滤器的应用---登陆验证

登陆验证是所有WEB开发中不可缺少的部分,最早的做法是通过验证session的方式完成,但是如果每个页面都这样做的话,则肯定会造成大量的代码重复,而通过过滤器的方式就可以避免这种重复的操作。

在这里需要注意的是,session本身是属于HTTP协议的范畴,但是doFilter()方法中定义的是ServletRequest类型的对象,那么要想取得session,则必须进行向下转型,将ServletRequest变为HttpServletRequest接口对象,才能够通过getSession()方法取得session对象。

packagecom.oumyye.过滤器;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;public class FilterLogin extends HttpServlet implementsFilter {privateFilterConfig filterConfig;public void init(FilterConfig filterConfig) throwsServletException {this.filterConfig =filterConfig;

}public voiddoFilter(ServletRequest request, ServletResponse response,

FilterChain filterChain)throwsServletException,

IOException {

HttpSession session=((HttpServletRequest)request).getSession();

response.setCharacterEncoding("gb2312"); //响应客户端类型

if(session.getAttribute("user")==null){ //判断session中是否有user这个对象

PrintWriter out=response.getWriter(); //创建一个输出流//如果为空则通过javaScript脚本出输出提示并跳转到index.jsp页面

out.print("");

}else{

filterChain.doFilter(request, response);//否则继续执行

}

}public voiddestroy() {

}

}

User.java

packagecom.mr.filter;public classUser {privateString username;privateString password;publicString getUsername() {returnusername;

}publicString getPassword() {returnpassword;

}public voidsetUsername(String username) {this.username =username;

}public voidsetPassword(String password) {this.password =password;

}

}

配置web.XML

index.jsp

filterUser

com.oumyye.过滤器.FilterLogin

filterUser

/*

jsp页面:

index.jsp

alert("用户名不能为空")

document.form.name.focus();return false;

}if(document.form.password.value==""){

alert("密码不能为空")

document.form.password.focus();return false;

}

}

使用过滤器身份验证

 

使用过滤器身份验证

用户名:
密  码:

loginresult.jsp

使用过滤器身份验证

User user=newUser();

user.setUsername(name);

user.setPassword(password);

session.setAttribute("user",user);

response.sendRedirect("filter/loginsuccee.jsp");%>

loginsuccee.jsp

使用过滤器身份验证

您己成功登录

返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值