Recentemente, fiz um projeto que tenha requisitos. Eu quero implementar a função de login automática. Ao verificar as informações relevantes, pretendo usar o monitoramento da sessão para fazê -lo. A seguir, é apresentada uma lista dos métodos para configurar o monitor:
1. Adicione o código a seguir ao arquivo web.xml do projeto:
<!-Adicione o ouvinte sessão-> <Ilvier> <luber-cllass> Caminho do ouvinte
2. Escreva aulas de java.
classe pública sessionListener implementa httpSessionListener {public void sessionCreated (httpSessionEvent arg0) {// SimpleDateFormat é executado quando a sessão é criada SimpleFormat SimpleFormat = new SimpleDateFormat ("mm-ss-ms"); "+NowTimes+" _ "+u); httpSession ses = arg0.getSession (); string id = ses.getId ()+" _ "+ses.getcreationTime ();} public void sessionDestroyed (httpSessionEvent arg0) {// simpledformat Extimats quando a sessão simples (httpsessionEvent arg0) {// simpledFormat Executes quando a sessão falha quando a sessão (httpssession arg0) {// simledEformat executes quando falha SimpledateFormat ("MM-SS-MS"); String NowTimes = SimpleFormat.Format (new Date ()); //System.out.println("Session expirou .. Horário de término: "+NowTimes);}}Após a conclusão da configuração, entrei com sucesso no método SessionDestroyed após a expiração da sessão. Eu estava pronto para executar a operação de salto de página. De repente, descobri como escrever um salto. Fiquei surpreso e continuei a navegar na Internet para perguntar ao mestre. Descobri que esse monitor foi feito com algumas estatísticas em segundo plano e não conseguia realizar a função do salto de página.
Só posso desistir deste método e começar a usar filtros para implementá -lo
1. Adicione a configuração do filtro em web.xml
<filter> <filter-name> sessionfilter </filter-name> <filter-class> com.orchestrall.web.helper.session.sessionFilter </filter-class> </filter> <filter-Mapping> <filter-Name> sessionfilter </filter-name> <url-Pattern>
2. Crie uma nova classe SessionFilter para implementar a interface do filtro.
public class SessionFilter implements Filter {public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse HTTPRESPONSEIRA = (HTTPSERVLETRESPONSEIRA) Resposta; HttpSession Session = httPrequest.getSession (); // Faça logon url.substring (url.lastindexof ("/")); // processamento de tempo limite, o tempo limite do AJAX solicita o status do tempo limite e o tempo limite da solicitação da página retornará um prompt e redirecionará se (Path.IndexOf ("Ação")! (httprequest.getheader ("x-requestado-with")! = null && httprequest.getheader ("x-refestido-with"). Equalsignorecase ("xmlhttprequest")) {httproPlonse.addheader (" "Timeout"); httprosponse.addheader ("loginpath", loginurl); cadeia.Dofilter (solicitação, resposta); // impossível, caso contrário, a solicitação errará} else {string str = "<script idioma = 'javascript'> alert ('sessões, ligue -se em'); "'; </script>"; Response.SetContentType ("text/html; charset = utf-8"); // Resolva chineses ebled Try {PrintWriter writer = Response.getWriter (); Writer.write (str); writer.flush (); writer.close ();}}} {E. {Chain.Dofilter (solicitação, resposta);}}@SubsteridePublic void init (filterConfig arg0) lança servleTexception {// TODO Auto-Gerated Method Stub}}3. JS cliente, usado para o tempo limite da sessão de solicitação de Ajax
Para jQuery
<script type = "text/javascript"> $ (document) .ajaxcomplete (function (event, xhr, configurações) {if (xhr.getResponseHeader ("sessionStuss") == "timeout") {if (xhr.getResponseHeader ("LoginPath") {alert "; Window.Location.Replace (xhr.getResponseheader ("LoginPath")); </script>solicitação de Ajax para extjs
Ext.ajax.on ('requestComplete', checkUserSessionStatus, este); função checkUserSessionStatus (Conn, Response, Options) {if (Response.getResponseHeader ("sessionStatus") == 'timeout') {if (Response.getResponseHeader ("LoginPath")) {alert ') {se = Response.GetResponseHeader ("LoginPath");} else {alert ("Timeout da solicitação, faça o login novamente!");}}}Se uma certa solicitação de Ajax não for afetada pelo método global, ao usar o método $ .ajax (), o global no parâmetro poderá ser definido como false. O código jQuery é o seguinte:
$ .ajax ({url: "test.html", global: false // não aciona o evento global do Ajax})O exposto acima é o código de exemplo que o editor apresentou a você que a sessão pulará automaticamente para a página de login depois que ele expirar. Espero que seja útil para todos. Se você quiser saber mais, preste atenção no site do Wulin.com!