一.分页处理 (5.在线人数统计 8.分页处理 9.注销登陆 )
SeesionContext对象即jsp页面的applicationScope对象,是所有session会话所共享,我们通过建立对session声明周期的listener,绑定SeesionContext进行计数,就可以实现统计在线人数.
Tomcat 8.5也不需要再在web.xml中进行配置,直接在eclipse中建立listener文件,勾选属性就可以了
- Session对话监听 实现5
@WebListener
public class userSessionListener implements HttpSessionListener {
/**
* Default constructor.
*/
public userSessionListener() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpSessionListener#sessionCreated(HttpSessionEvent)
*/
public void sessionCreated(HttpSessionEvent se) {
//1.创建ServletContext对象
//2.在对象ServletContext中绑定计数,seesion建立一次加一
//3.绑定的元素在EL表达式中体现在applicationScope
System.out.println("创建了");
ServletContext sc=se.getSession().getServletContext();
se.getSession().setAttribute("Username","");
Object count=sc.getAttribute("count");
if(count==null)
{
sc.setAttribute("count",1);
}
else {
sc.setAttribute("count",(Integer)count+1);
}
}
/**
* @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
*/
public void sessionDestroyed(HttpSessionEvent se)
{
System.out.println("销毁了一个");
ServletContext sc=se.getSession().getServletContext();
Object count=sc.getAttribute("count");
if(count==null)
{
}
else {
if((Integer)count>=1)
sc.setAttribute("count",(Integer)count-1);
}
}
}
- 分页处理
关键在于sql语句String sql=“select *from teacher limit ?,?”;
request.setCharacterEncoding("UTF-8");
int pageSize=13;
int lineCount;
int pageCount;
int pageNow=1;
try
{
if(request.getParameter("pageNow")!=null)
{
pageNow=Integer.parseInt((String)request.getParameter("pageNow"));
}
else
pageNow=1;
System.out.println(pageNow);
ArrayList<Teacher> teachers=null;
if (flag==0)
{
lineCount=teacherDao.count();
pageCount=lineCount%pageSize==0?lineCount/pageSize:lineCount/pageSize+1;
teachers=teacherDao.findteacher(pageSize*(pageNow-1), pageSize);
}
else
{
teachers=teacherDao.fuzzy_Search(request.getParameter("content")+"",0,15);
pageCount=1;
}
request.setAttribute("teachers",teachers);
request.setAttribute("pageCount",pageCount);
request.setAttribute("pageNow",pageNow);
- 注销登陆
- 调用Session,validate方法,清除session信息,使用户进入未登陆状态 点击logOut后登陆状态已经消失,进入登陆界面
@WebServlet("/Logout")
public class Logout extends HttpServlet {
private static final long serialVersionUID = 1L;
public Logout() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
request.getSession().invalidate(); //清除session会话
response.sendRedirect("login.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// TODO Auto-generated method stub
doGet(request, response);
}
}
二.对404 500页面异常的友好处理
- commons/error.jsp界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%>
<body>
<%
response.setStatus(200); %>
很抱歉!你访问的页面不存在...... </body>
- 再在web.xml中配置
<error-page>
<error-code>404</error-code>
<location>/commons/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/commons/error.jsp</location>
</error-page>