【监听】
1.
jsp页面:
"index.jsp"
<body>
<form action="doindex.jsp" method="post">
<input type="text" name="name">
<input type="submit" value="确定">
</form>
</body>
"doindex.jsp":
<body>
<%
String name=request.getParameter("name") ;
User user=new User();
user.setId(1);
user.setName(name);
session.setAttribute("user", user);
request.getRequestDispatcher("MyJsp.jsp").forward(request,response);
%>
</body>
User类:
package com.bdqn.entity;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import com.bdqn.util.Contants;
public class User implements HttpSessionBindingListener {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
public User() {
// TODO Auto-generated constructor stub
}
@Override
public void valueBound(HttpSessionBindingEvent arg0) {
Contants.count++;
}
@Override
public void valueUnbound(HttpSessionBindingEvent arg0) {
Contants.count--;
}
}
util类:
package com.bdqn.util;
public class Contants {
public static int count=0;
}
"MyJsp.jsp"
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
人数:<%=Contants.count %>
ps:这种方式不用修改web.xml
2.
package com.bdqn.listen;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class Listening implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent event) {
ServletContext sc=event.getSession().getServletContext();
Object count=sc.getAttribute("count");
Integer count1=0;
if(count==null){
count1=1;
}else{
count1=(Integer)count;
count1++;
}
sc.setAttribute("count", count);
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
ServletContext sc=arg0.getSession().getServletContext();
Object count=sc.getAttribute("count");
Integer count1=0;
if(count==null){
count1=0;
}else{
count1=(Integer)count;
count1--;
}
sc.setAttribute("count", count);
}
ps:需完善代码
}
"MyJsp.jsp"
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
人数:<%
ServletContext sc=session.getServletContext();
Object count=sc.getAttribute("count");
out.print((Integer)count);
%>
web.xml:
添加:
<listener>
<listener-class>com.bdqn.listen.Listening</listener-class>
</listener>
【过滤器】
1.
package com.bdqn.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;
/*
* filter 实现类
*/
public class EncodingFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filter) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
filter.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
String name=config.getInitParameter("encoding");
System.out.println("+++++++++++"+name+"++++++++++++++");
}
}
2.web.xml:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.bdqn.filter.EncodingFilter</filter-class
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.bdqn.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.bdqn.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.bdqn.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.bdqn.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>