本文为博主原创,未经允许不得转载:
项目启动成功,进入首页的方式,我们往往在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>
第三种方式,其实就是对过滤器的应用及理解,过滤器用的地方很多,在此处记录一下,所谓积少成多。。
加油,哈哈哈