Servlet开发

Servlet过滤器:

主要是对访问主页的用户进行过滤,通过登录系统进入的用户可以看到主页内容,在session中存在currentuser。

可以对此进行判断:

 package com.java1234.web;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; public class Loginfilter implements Filter { @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest ServletRequest, ServletResponse ServletResponse, FilterChain FilterChain)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request=(HttpServletRequest)ServletRequest;//将ServletRequest强制转化为HttpServetRequest
HttpSession session=request.getSession();//获取sessin(如果用户登录就存在session)
Object o=session.getAttribute("currentUser");//获取currentUser对象
String path=request.getServletPath();//获取登录路径
if(o == null && path.indexOf("login")< 0){
/*服务器内部跳转 - -> 没有登录不能能访问主页*/
request.getRequestDispatcher("Login.jsp").forward(ServletRequest, ServletResponse);
}else{
FilterChain.doFilter(ServletRequest,ServletResponse);
}
} @Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub } }

Loginfilter.java

配置类似于 Servlet :

 </web-app>
<filter>
<filter-name>Loginfilter</filter-name>
<filter-class>com.java1234.web.Loginfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Loginfilter</filter-name>
<url-pattern>/login</url-pattern>
</filter-mapping>
</web-app>

Servlet监听器:

监听web事件;如application,session,request。

写一个监听session的例子:

首先当用户登录时,设置session值,这时候会添加属性,监听到。。。

其次注销的时候,删除session值,这时候是删除属性,监听到。。

so

代码如下:

 package com.java1234.listener;

 import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent; public class SessionAttributeListener implements HttpSessionAttributeListener{ @Override
public void attributeAdded(HttpSessionBindingEvent HttpSessionBindingEvent) {
// TODO Auto-generated method stub
System.out.println("添加的属性名:"+HttpSessionBindingEvent.getName()+"属性值:"+HttpSessionBindingEvent.getValue());
} @Override
public void attributeRemoved(HttpSessionBindingEvent HttpSessionBindingEvent) {
// TODO Auto-generated method stub
System.out.println("删除的属性名:"+HttpSessionBindingEvent.getName()+"属性值 :"+HttpSessionBindingEvent.getValue());
} @Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub } }

SessionAttributeListener.java

退出登录的java代码:

 package com.java1234.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LogoutServlet extends HttpServlet{ /**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request,response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
//清除session
request.getSession().invalidate();
response.sendRedirect("Login.jsp");
}
@Override
public void destroy() {
// TODO Auto-generated method stub }
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub }
}

LogoutServlet.java

配置web.xml

  <!-- 添加监听器 -->
<listener>
<listener-class>
com.java1234.listener.SessionAttributeListener
</listener-class>
</listener>
<!-- 设置logout的servlet -->
<servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>com.java1234.web.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/logout</url-pattern>
</servlet-mapping>

web.xml

启动登录------>注销

运行结果

至此ok了。。

最新文章

  1. linux 正则表达式使用
  2. 创业方向:O2O及移动社交 from 沈博阳
  3. python——代码编码格式转换
  4. CentOS 7 防火墙和端口配置
  5. Maven 使用介绍
  6. 盘点国内网站常用的一些 CDN 公共库加速服务
  7. UVALive 2635 匈牙利算法
  8. Pod::Executable pull
  9. PAT_1072 Gas Station
  10. 【AOS应用基础平台】完好了AOS标签库,和标准标签库完美兼容了
  11. 关于nginx架构探究(4)
  12. 插入排序(Insertion Sort)
  13. C# DataTable 详解
  14. css div11
  15. 关于SurfaceView的那些事
  16. iOS之ViewController的多层presentViewController的dismiss问题
  17. 网络拓扑_华三H3C的路由器+交换机
  18. 博客主Judge已跳槽搬家emmm
  19. Hexo的next主题安装
  20. Activiti工作流搭建---初始化数据库

热门文章

  1. AJPFX关于static总结
  2. div里面整齐的字体样式,所有浏览器都兼容
  3. Linux 之 2&gt;&amp;1
  4. 依赖注入(IOC) 详解
  5. 架构师细说 NGINX 的配置及优化
  6. 迅为4418开发板Qt移植移动4G模块第二部分
  7. leetcode_654. Maximum Binary Tree
  8. C/S模型:TCP,UDP构建客户端和服务器端(BIO实现
  9. 查看外网IP
  10. mfc 菜单