2011级-csdn-java-张侃— Servlet监听器在开发中的应用案例
2012-12-05 19:16
423 查看
案例:显示登陆用户列表,并实现踢人功能。
登陆的jsp页面------------------------
处理登陆请求的servlet---------------------------
显示登陆成功与否的jsp页面------------------
显示用户列表的jsp页面-----------------
处理踢人请求的servlet-----------------------------
servlet监听器-------------
实体类------------------------
处理乱码的过滤器----------------
配置文件----------
项目所导的包------------
登陆的jsp页面------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <form action="${pageContext.request.contextPath}/LoginServlet" method="post"> 用户名: <input type="text" name="username"><br> 密 码: <input type="text" name="password"><br> <input type="submit" value="登陆"> </form> </body> </html>
处理登陆请求的servlet---------------------------
package com.hbsi.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.hbsi.domain.User; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String password=request.getParameter("password"); User user=new User(); user.setUsername(username); user.setPassword(password); request.getSession().setAttribute("user",user); response.sendRedirect("/ListenerKicking/index.jsp"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
显示登陆成功与否的jsp页面------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> 欢迎您:${user.username} <br> </body> </html>
显示用户列表的jsp页面-----------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'userJsp.jsp' starting page</title> </head> <body> 当前在线用户为: <br /> <c:forEach items="${map}" var="me"> <c:url value="/KickUserServlet" var="url"> <c:param name="username" value="${me.key}"></c:param> </c:url> ${me.key}<a href="${url}">剔出去</a> <br /> </c:forEach> </body> </html>
处理踢人请求的servlet-----------------------------
package com.hbsi.servlet; import java.io.IOException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class KickUserServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); username=new String(username.getBytes("iso8859-1"),"Utf-8"); Map map=(Map) this.getServletContext().getAttribute("map"); HttpSession session=(HttpSession) map.get(username); if(session!=null){ session.invalidate(); map.remove(username); } request.getRequestDispatcher("/userJsp.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
servlet监听器-------------
package com.hbsi.listener; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import com.hbsi.domain.User; public class SessionListener implements HttpSessionAttributeListener { @Override public void attributeAdded(HttpSessionBindingEvent se) { Object obj=se.getValue(); if(obj instanceof User){ User user=(User) obj; HttpSession session=se.getSession(); Map map=(Map) session.getServletContext().getAttribute("map"); if(map==null){ map=new HashMap(); session.getServletContext().setAttribute("map",map); } map.put(user.getUsername(),session); } } @Override public void attributeRemoved(HttpSessionBindingEvent se) { } @Override public void attributeReplaced(HttpSessionBindingEvent se) { // TODO Auto-generated method stub } }
实体类------------------------
package com.hbsi.domain; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
处理乱码的过滤器----------------
package com.hbsi.filter; 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; public class CharseterEncodingFilter implements Filter { private FilterConfig config = null; private String defaultCharset = "UTF-8"; @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String charset = config.getInitParameter("charset"); if(charset==null){ charset = defaultCharset; } request.setCharacterEncoding(charset); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset="+charset); chain.doFilter(request, response); } @Override public void init(FilterConfig filterConfig) throws ServletException { this.config = filterConfig; } }
配置文件----------
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>CharseterEncodingFilter</filter-name> <filter-class>com.hbsi.filter.CharseterEncodingFilter</filter-class> <init-param> <param-name>charset</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharseterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>com.hbsi.listener.SessionListener</listener-class> </listener> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.hbsi.servlet.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>KickUserServlet</servlet-name> <servlet-class>com.hbsi.servlet.KickUserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>KickUserServlet</servlet-name> <url-pattern>/KickUserServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
项目所导的包------------
相关文章推荐
- 2011级-csdn-java-张侃— Servlet事件监听器
- 2011级-csdn-java-张侃—struts2文件上传错误信息国际化的处理(案例)
- Servlet监听器在开发中的应用案例
- 2011级-csdn-java-张侃— JDBC开发—连接池(一)
- Servlet监听器在开发中的应用案例
- 2011级-csdn-java-张侃— JavaWEB开发-国际化(二)
- 2011级-csdn-java-张侃— JDBC开发—连接池(二)
- 2011级-csdn-java-张侃— Hibernate原理与应用(二)
- 2011级-csdn-java-张侃— JavaWEB开发-国际化(一)
- 2011级-csdn-java-张侃— Hibernate原理与应用(三)
- 2011级-csdn-java-张侃— JDBC开发—文件的上传和下载(一)
- 2011级-csdn-java-张侃— JDBC开发—文件的上传和下载(二)
- 2011级-csdn-java-张侃— Hibernate原理与应用(一)
- 企业级应用中的Applet和Servlet的通信-Java基础-Java-编程开发
- JavaWeb开发——Servlet事件监听器(一)
- 2011级-csdn-java-张侃—Spring(2)
- 2011级-csdn-java-张侃— Struts2.0国际化
- 2011级-csdn-java-张侃—Spring(1)
- JavaWeb开发——Servlet事件监听器(二)
- 2011级-csdn-java-张侃—Spring(2)