Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar filtros para gestionar sesiones de usuarios

Cómo utilizar filtros para gestionar sesiones de usuarios

A menudo nos encontramos con esta situación cuando salimos por un tiempo para hacer algo y luego regresamos para continuar con nuestras operaciones en la página web, aparecerá un error de tiempo de espera de sesión, seguido de un montón de errores. Los usuarios se sienten muy descontentos. En este caso, sería más amigable si se pudiera mostrar un mensaje de tiempo de espera de sesión en una página de error. En otra situación, cuando hay múltiples roles de usuario en un sistema, algunas páginas no son adecuadas para algunos niveles bajos. Los usuarios de nivel bajo no tienen permiso para verlo. Algunos enlaces pueden bloquearse según diferentes permisos en la página para que los usuarios de bajo nivel no puedan ingresar, pero esto solo puede evitar que los usuarios de bajo nivel vean enlaces a operaciones avanzadas. El usuario conoce la dirección del enlace e ingresa el enlace directamente en la barra de direcciones, también puede ingresar al sistema para resolver estos dos problemas, debe emitir un juicio en la página.

If(session?== null) {

//Si se agota el tiempo de espera, salte a la página de inicio de sesión e inicie sesión nuevamente

}

If(checkAuthority() == false) {

//Si la autoridad es insuficiente, salte a la página de error y dé un mensaje

}

Agregar los juicios anteriores a la página jsp parece resolver el problema. Sin embargo, un sistema a menudo tiene cientos o miles de páginas jsp. Además, sería muy problemático si los juicios de permisos. Si cambia en el futuro, todas las páginas jsp deberán mantenerse. La carga de trabajo de jsp es enorme y la flexibilidad es muy pobre. Si tiene que pasar por un lugar antes de ingresar a estos jsp, parece mejor juzgar en este lugar. Usamos filtros para resolver este problema

Cree un nuevo filtro llamado: FilterDemo. Esta clase hereda de: javax.servlet.Filter

public?class?FilterDemo?implements?Filter{.

público? void?destroy() {}

público?void?doFilter(ServletRequest sreq, respuesta ServletResponse,

FilterChain filterChain)

lanza?IOException, ServletException {

HttpServletRequest request=(HttpServletRequest)sreq;

HttpSession?session?= request.getSession(false);

if (session?==?null) {

//Si la sesión se agota, manéjela aquí

}

if(request.getRequestURI(). terminaCon("download.do") ) {

//Aquí puede procesar diferentes solicitudes en función de si el usuario tiene permiso

}

request.getRequestDispatcher ("/Error.jsp ").

adelante(solicitud,respuesta);

}

public?void?init(FilterConfig filterConfig)

lanza? ServletException {}

}

Luego agrega el nuevo filtro a web.xml. Para implementar el filtro, debes agregar dos partes:

.

1.elemento de filtro

El elemento de filtro p>

está ubicado al frente del archivo descriptor de implementación (web.xml), antes de cualquier elemento de mapeo de filtro, servlet o mapeo de servlet.

SessionFilter

myPackage.FilterDemo

2.elemento de mapeo de filtro

El elemento de mapeo de filtro está ubicado después del elemento de filtro y antes del elemento serlvet en la web Archivo .xml

SessionFilter

*.do< /url-pattern>

El contenido anterior significa que todas las solicitudes que terminen en .do pasarán primero el filtro que especificamos aquí:

Nuevo servlet para probar:

public?class?DownLoadDemo?extends?HttpServlet {

private?static?final?long?serialVersionUID?=?1L;

public?DownLoadDemo() {

super();

}

¿protegido?void?doGet(solicitud HttpServletRequest, respuesta HttpServletResponse)?lanzamientos? ServletException, IOException {

this.doPost(solicitud, respuesta);

}

¿protegido?void?doPost(solicitud HttpServletRequest, respuesta HttpServletResponse)?¿lanzamientos? ServletException, IOException {

request.getRequestDispatcher("/DownLoadExcel.jsp").

adelante(solicitud, respuesta);

}

}

Implementar el servlet en web.xml

DownLoadDemo

com.sinosoft.base.sessiondemo.DownLoadDemo

DownLoadDemo

/descargar

Crear un nuevo jsp para probar

Index.jsp

<

/p>

Esta es una aplicación de demostración

Exportar Excel

Para facilitar la comparación, usamos uno en forma de hipervínculo y el otro es para saltar a través de un servlet. Cuando se hace clic en el botón enviar, se interceptará, pero se hará clic directamente en el hipervínculo. no será interceptado, porque El filtro está configurado para interceptar el formulario .do. Si desea interceptar jsp, también puede usar DownLoadExcel.jsp

Agregar. una página de error Error.jsp

Lo siento, no tienes permiso