设置了根域名访问为testServlet,让他重定向到首页为test.jsp,事实上也都触发了,但是最后显示的为什么不是test.jsp生成页面,依然还是index.jsp生成的页面??
重定向是通过Dispatcher进行的,而不是sendRedirect,会有影响吗?
req.getRequestDispatcher("test.jsp").forward(req, resp);
[2024-11-20 02:08:24,706] 工件 mavenFinal: 工件已成功部署
[2024-11-20 02:08:24,706] 工件 mavenFinal: 部署已花费 974 毫秒
Session created: 68E11A7B6708B9A40D7618F6FACFE666
Active sessions: 1
index.jsp had been touch!!!
Session created: 4779DFD02DD214D2FD8D8DB472BDC34A
Active sessions: 2
index.jsp had been touch!!!
Session created: 3E9C28768C9EBC36543B7BFCB44C9B4D
Active sessions: 3
index.jsp had been touch!!!
the test servlet had been touch
test.jsp has been touch!!!
服务器运行时,初始的这三个session连接是怎么回事?
index.jsp had been touch!!!
the test servlet had been touch
test.jsp has been touch!!!
再次访问域名时,访问信息依次如上所述,test.jsp既然是最后访问到的,为什么不会覆盖Indwx.jsp?再或者,为什么会访问index.jsp(此时welcome并没有配置)?
如果没有配置 web.xml 的url的映射顺序,而是分散在各个servelt当中,以@WebServlet("/")的形式定义映射方式,那么url的处理顺序是怎样的?
并不是url的处理顺序问题导致的
能否禁用web的默认welcome-list?使其访问域名时默认不渲染任何页面?而是经由servlet处理后才行?
package filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebFilter("/*")
public class LoginFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化过滤器}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;// 获取会话HttpSession session = httpRequest.getSession(false);// 检查会话是否存在并且用户已登录if (session != null && session.getAttribute("user") != null) {// 用户已登录,放行请求chain.doFilter(request, response);} else {// 用户未登录,重定向到登录页面httpResponse.sendRedirect(httpRequest.getContextPath() + "/login.jsp");}}@Overridepublic void destroy() {// 销毁过滤器}
}