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