Red de conocimiento del abogados - Ley de patentes - 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 directamente el enlace en la barra de direcciones. ¿No sería posible ingresar al sistema para resolver estos dos problemas?

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.

lt;filtergt;

lt;filter-namegt;SessionFilterlt;/filter-namegt;

lt;filter-classgt;myPackage.FilterDemolt;/filter -classgt;

lt;/filtergt;

2.elemento de mapeo de filtro

El elemento de mapeo de filtro se encuentra después del elemento serlvet después del elemento de filtro en el archivo web.xml Antes

lt;filter-mappinggt;

lt;filter-namegt;SessionFilterlt;/filter-namegt;

lt;url -patterngt;*.dolt ;/url-patterngt;

lt;/filter-mappinggt;

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

Crear un nuevo Servlet para probar:

public?class?DownLoadDemo?extends?HttpServlet {

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

público?DownLoadDemo() {

super();

}

protegido?void?doGet( ¿Solicitud HttpServletRequest, respuesta HttpServletResponse)?throws?ServletException, IOException {

this.doPost(solicitud, respuesta);

}

protegido?void?doPost( ¿Solicitud HttpServletRequest, respuesta HttpServletResponse)?throws?ServletException, IOException {

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

adelante(solicitud, respuesta);

}

}

Implementar el servlet en web.xml

lt;servletgt;

lt;servlet-namegt; DownLoadDemolt; /servlet-namegt;

lt;servlet-classgt;com.sinosoft.base.sessiondemo.DownLoadDemolt;/servlet-classgt;

lt;/servletgt;

lt;servlet-mappinggt;

lt;servlet-namegt;DownLoadDemolt;/servlet-namegt;

lt;url-patternngt;/downloadlt;/url-patternngt ;

lt;/servlet-mappinggt

;

Crear un nuevo jsp para probar

Index.jsp

lt; bodygt;

lt;action="download; .do "gt;

lt;h1gt;Esta es una aplicación de demostraciónlt;/h1gt;

lt;a?href?=?'DownLoadExcel.jsp'gt;Exportar Excellt; /agt ;

lt;input?type='submit'gt;

lt;/formgt;

lt;/bodygt;

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, será interceptado, pero hacer clic directamente en el hipervínculo no será interceptado. Debido a que nuestro filtro está configurado para interceptar en formato .do, si desea interceptar jsp, también puede usar lt;url-patterngt;DownLoadExcel.jsp lt;/url-patterngt;

Agregar otro error. page Error.jsp

lt;bodygt;

lt;h1gt;Lo siento, no tienes permisolt;/h1gt;

lt;/bodygt;