web项目部署在tomcat后不能访问jsp页面,可以访问html页面

yanggang832 2015-01-20 11:37:17
web项目部署在tomcat后不能访问jsp页面,可以访问html页面

tomcat应该算是正常启动,启动日志如下:


求大神帮忙看看,纠结好久了。
...全文
29814 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Defonds 2015-01-20
  • 打赏
  • 举报
回复
1. http://127.0.0.1:8989 页面能看到小猫吗? 2. 你怎么部署的?改的 server.xml 还是直接丢的 war 包?如果是前者,贴配置;如果是后者,注意 war 包名是不是 gdzc.war?
yanggang832 2015-01-20
  • 打赏
  • 举报
回复
补充一下:浏览器不是报404错误,而是:
yanggang832 2015-01-20
  • 打赏
  • 举报
回复
引用 9 楼 shixitong 的回复:
在你的filter应该把login.jsp这个文件去除掉,因为这个文件不需要过滤
<filter>
	<filter-name>LoginFilter</filter-name>
	<filter-class>filter.LoginFilter</filter-class>
	<init-param>
		<description>
		</description>
		<param-name>excepUrl</param-name>
		<param-value>/login.jsp</param-value>
	</init-param>
</filter>
对应的你的filter就应该这样写
public class LoginFilter extends HttpServlet implements Filter {
	/**
	 * 
	 */
	private static final long serialVersionUID = 3441961266017874098L;
	private String excepUrl;

	public void init(FilterConfig arg0) throws ServletException {
		excepUrl = arg0.getInitParameter("excepUrl");
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain filterChain) throws IOException, ServletException {

		HttpServletRequest arg0 = (HttpServletRequest) request;
		HttpServletResponse arg1 = (HttpServletResponse) response;

		String servletPath = arg0.getServletPath();
		if (servletPath.equals(excepUrl)) {
			filterChain.doFilter(request, response);
			return;
		}
		
		Object user = arg0.getSession().getAttribute("loginUser");
		if (user == null) {
			arg0.getSession().setAttribute("msg", "请先登录");
			arg1.sendRedirect(arg0.getContextPath() + "/login.jsp"); // 返回登录界面
			return;
		}
		filterChain.doFilter(request, response);

	}

}



谢谢,解决了。。
shixitong 2015-01-20
  • 打赏
  • 举报
回复
在你的filter应该把login.jsp这个文件去除掉,因为这个文件不需要过滤
<filter>
	<filter-name>LoginFilter</filter-name>
	<filter-class>filter.LoginFilter</filter-class>
	<init-param>
		<description>
		</description>
		<param-name>excepUrl</param-name>
		<param-value>/login.jsp</param-value>
	</init-param>
</filter>
对应的你的filter就应该这样写
public class LoginFilter extends HttpServlet implements Filter {
	/**
	 * 
	 */
	private static final long serialVersionUID = 3441961266017874098L;
	private String excepUrl;

	public void init(FilterConfig arg0) throws ServletException {
		excepUrl = arg0.getInitParameter("excepUrl");
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain filterChain) throws IOException, ServletException {

		HttpServletRequest arg0 = (HttpServletRequest) request;
		HttpServletResponse arg1 = (HttpServletResponse) response;

		String servletPath = arg0.getServletPath();
		if (servletPath.equals(excepUrl)) {
			filterChain.doFilter(request, response);
			return;
		}
		
		Object user = arg0.getSession().getAttribute("loginUser");
		if (user == null) {
			arg0.getSession().setAttribute("msg", "请先登录");
			arg1.sendRedirect(arg0.getContextPath() + "/login.jsp"); // 返回登录界面
			return;
		}
		filterChain.doFilter(request, response);

	}

}



yanggang832 2015-01-20
  • 打赏
  • 举报
回复
引用 6 楼 shixitong 的回复:
贴下你的filter.LoginFilter看看
忘记引用格式了,重新发下。
package filter;

import java.io.IOException;

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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import entity.User;

public class LoginFilter extends HttpServlet implements Filter{
	public void init(FilterConfig arg0)throws ServletException{}
	
	public void doFilter(ServletRequest request,ServletResponse response,FilterChain filterChain) throws IOException,ServletException{	  
		        HttpServletRequest arg0 = (HttpServletRequest)request;  
		        HttpServletResponse arg1 = (HttpServletResponse) response;  
		        User user = (User)arg0.getSession().getAttribute("loginUser");  
		        if(user==null){  
		        	arg0.getSession().setAttribute("msg", "请先登录");
		        	arg1.sendRedirect(arg0.getContextPath()+"/login.jsp");  //返回登录界面  
		        	 return;  
		        }  
		        filterChain.doFilter(request,response);  
		    }  
	
}
yanggang832 2015-01-20
  • 打赏
  • 举报
回复
引用 6 楼 shixitong 的回复:
贴下你的filter.LoginFilter看看
引用 6 楼 shixitong 的回复:
贴下你的filter.LoginFilter看看
package filter; import java.io.IOException; 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.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import entity.User; public class LoginFilter extends HttpServlet implements Filter{ public void init(FilterConfig arg0)throws ServletException{} public void doFilter(ServletRequest request,ServletResponse response,FilterChain filterChain) throws IOException,ServletException{ HttpServletRequest arg0 = (HttpServletRequest)request; HttpServletResponse arg1 = (HttpServletResponse) response; User user = (User)arg0.getSession().getAttribute("loginUser"); if(user==null){ arg0.getSession().setAttribute("msg", "请先登录"); arg1.sendRedirect(arg0.getContextPath()+"/login.jsp"); //返回登录界面 return; } filterChain.doFilter(request,response); } }
shixitong 2015-01-20
  • 打赏
  • 举报
回复
贴下你的filter.LoginFilter看看
yanggang832 2015-01-20
  • 打赏
  • 举报
回复
引用 3 楼 z345434645 的回复:
工程目录发出来下,WEB-INF下的是不能直接访问的。


我没有放在web_inf下面,工程目录如下:
yanggang832 2015-01-20
  • 打赏
  • 举报
回复
引用 2 楼 defonds 的回复:
1. http://127.0.0.1:8989 页面能看到小猫吗? 2. 你怎么部署的?改的 server.xml 还是直接丢的 war 包?如果是前者,贴配置;如果是后者,注意 war 包名是不是 gdzc.war?
可以看见小猫,部署的话是直接在Meclipse下新建一个web项目,现在实现的就是一个登录功能,配置的话现在只有web.xml里面配置了过滤器的信息,如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name></display-name>	

 <!-- 配置Struts2 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  <!-- 部署filter  -->
  <filter>
  <filter-name>EncodingFilter</filter-name>
  <filter-class>filter.EncodingFilter</filter-class>
  <init-param>
  	<param-name>encoding</param-name>
  	<param-value>utf-8</param-value>
  </init-param>
  </filter>
  
   <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter>
    	<filter-name>LoginFilter</filter-name>
    	<filter-class>filter.LoginFilter</filter-class>
</filter>

<filter-mapping>
		<filter-name>LoginFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
		<filter-name>LoginFilter</filter-name>
		<url-pattern>*.action</url-pattern>
</filter-mapping>	
	
 
  

  
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>
邹邹wl 2015-01-20
  • 打赏
  • 举报
回复
工程目录发出来下,WEB-INF下的是不能直接访问的。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧