zoukankan      html  css  js  c++  java
  • java web项目启动进入首页的配置方式(包含过滤跳转首页实现)

    本文为博主原创,未经允许不得转载:

          项目启动成功,进入首页的方式,我们往往在web.xml 中通过以下的方式默认进入跳转首页,

    <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>

    在项目启动成功之后,在浏览器输入:http://localhost:端口号/项目名称,回车之后就可以进入index.jsp页面。

    另外一种方法通过后代代码实现跳转首页的方式是在index.jsp中进行重定向,进入后代处理,然后再跳转首页,

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!--通过页面重定向进行,跳转到指定的页面--> <% response.sendRedirect(request.getContextPath()+"/jsp/index.jsp"); %>
    <!--两种方式只能选择一种-->

    <!--通过页面重定向进行java后台代码处理,根据后代处理进行跳转 -->
        <%
            response.sendRedirect(request.getContextPath()+"/login");
        %>
    </body> </html>

    第三种方法是在这边进行特殊批注的,在项目中,也多用这种方式进行实现,即通过过滤器方式进入首页的方式:

           其处理的逻辑为获取URL,并对URL进行判断,判断URL携带的参数,如果URL携带参数正确,其可以进行正常的处理和响应,

    当没有携带对应的参数时,则进入首页。

    将代码展示如下,启动默认跳转的为登录页:

         

    package com.test.filter;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.lang3.StringUtils;
    
    import com.test.modules.mobile.UserInfo;
    import com.test.utils.SystemConstant;
    
    
    public class SystemFilter implements Filter {
    
        private static final List<String> STRINGS = new ArrayList<String>();
        //此处可以定义加载时要过滤的资源类型
        static {
            STRINGS.add("jsp");
            STRINGS.add("js");
            STRINGS.add("css");
            STRINGS.add("images");
            STRINGS.add("bmp");
            STRINGS.add("gif");
            STRINGS.add("jpg");
            STRINGS.add("jpeg");
            STRINGS.add("png");
        }
    
        @Override
        public void destroy() {
    
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest,
                             ServletResponse servletResponse,
                             FilterChain chain)
                throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            //通过过滤器实现编码方式的控制
            request.setCharacterEncoding(SystemConstant.UTF8_CODE);
            response.setCharacterEncoding(SystemConstant.UTF8_CODE);
            String url = request.getRequestURI();
            String path = request.getContextPath();
            UserInfo userInfo = (UserInfo) request.getSession().getAttribute("loginUser"); //此处用来判断浏览器缓存用户数据是否存在
            if (!url.contains("login")&& (!isAuth(url) || url.contains(".json"))) {
                if (null == userInfo || StringUtils.isBlank(userInfo.getLoginName())) {
                    String tip = "<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script language='javascript'>window.parent.location.href='"
                                 + path
                                 + "/login'</script></head><body></body></html>"; //此处用来后台请求跳转的路径,当请求到此处时,就会进入对应的后台路径中进行请求
                    PrintWriter outprint = response.getWriter();
                    outprint.write(tip);
                    outprint.flush();
                    return;
                } else {
                    chain.doFilter(request, response);
                }
            } else {
                chain.doFilter(request, response);
            }
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {}
    
        public boolean isAuth(String url) {
            for (String string : STRINGS) {
                if (url.contains(string)) {
                    return true;
                }
            }
            return false;
        }
    }

    同时,在web.xml文件中配置过滤器:

    <filter>
            <filter-name>SystemFilter</filter-name>
            <filter-class>com.test.filter.SystemFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>SystemFilter</filter-name>
            <url-pattern>*</url-pattern>
        </filter-mapping>

    第三种方式,其实就是对过滤器的应用及理解,过滤器用的地方很多,在此处记录一下,所谓积少成多。。

    加油,哈哈哈

  • 相关阅读:
    [模板] Miller_Rabin素数判断代码实现存档
    [模板] KMP字符串匹配标准代码
    [模板] 二分图匹配问题——匈牙利算法
    [原博客存档] [模板] 矩阵快速幂
    matplotlib 随记
    23种设计模式
    26、Android--AsyncTask
    25、Android--Handler
    24、Android--SurfaceView
    23、Android--WebView
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/7904485.html
Copyright © 2011-2022 走看看