编写了个过滤类,必须登陆才能进行以后的操作,login.jsp在tomcat的web-info目录下,其他的操作都在我新建的main文件夹下,当直接输入http://localhost:8080/struts/main
会自动让你回到login.jsp页面登陆,
过滤类:package org.langsin.news.database;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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class SecurityFilter implements Filter { public void destroy() {
} public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
 HttpServletRequest request = (HttpServletRequest)req;
 HttpServletResponse response = (HttpServletResponse)res;
         if(request.getSession().getAttribute("user") == null)
         {
          response.sendRedirect(response.getContentType()+"/login.jsp");
         }
         chain.doFilter(request, response);
} public void init(FilterConfig arg0) throws ServletException {
}}
在servlet配置如下
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
  
  <filter>
    <filter-name>security</filter-name>
    <filter-class>org.langsin.news.database.SecurityFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>security</filter-name>
    <url-pattern>/main/*</url-pattern>
  </filter-mapping>
可当我输入http://localhost:8080/struts/main时,却找不到login。jsp,地址栏却变成http://localhost:8080/struts/main/null/login.jsp 真的很不理解

解决方案 »

  1.   

    web-info下的东西是不能直接从客户端访问的
      

  2.   

    web-info下的文件从客户端不能直接访问的
    支持1楼
      

  3.   

    修改TOMCAT
    中WEB-INF的配置,把其中的WEB.XML中的首页改为你的页面地址
      

  4.   

    我前面的说错了:我的login.jsp  在我的C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\wang\login.jsp 中啊 其他文件在 C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\wang\main中
    请帮我解决啊
      

  5.   

    之所以变成那样是由于 response.sendRedirect(response.getContentType()+"/login.jsp"); 
    中的response.getContentType()没得到东西,显示为null,所以你的才会那样
    直接改成response.sendRedirect("/login.jsp");应该可以解决 
      

  6.   

    response.getContentType()返回的是MIME类型
    应该是request.getContextPath()吧
      

  7.   

    支持六楼,改成response.sendRedirect("/login.jsp");应该可以解决
      

  8.   

    我改成response.sendRedirect("/login.jsp");
    还是不行啊  
      

  9.   

    request.getRequestDispatcher("login.jsp").forward(request,response) ;
      

  10.   

    你改成response.sendRedirect("/wang/login.jsp"); 
    试试