用Struts2的拦截器做一个控制地址栏输入网址的代码

[size=medium][color=darkblue]小弟先描述下问题:只能让用户在地址栏中输入http://localhost:8080/install.jsp进行操作,不能输入http://localhost:8080/install.action访问。也就是只允许*.jsp的也没访问,不允许*.action的访问。
小弟苦思冥想了2天,头发都掉了好几十根了。忘各位高手给与提示,或代码。万分感谢![/color][/size]
[b]问题补充:[/b]
不能直接访问intall.action,但可以从intall.jsp中点击一个连接或按钮访问到intall.action。
小弟想用struts2拦截器实现,因为最近在学习s2。
[b]问题补充:[/b]
您好!
小弟想做一个论坛的安装程序,像discuz那样的安装。从“用户协议”到“数据库配置”都是jsp页面,想让用户按照步骤来进行安装,而不是直接在地址栏中输入intall.action进行安装。这几天我用了session进行控制,可以基本实现。总感觉不太满意,渴望大哥能分享更好的方法。谢谢!

在install.jsp隐藏一个字段,跳到intall.action时,如果有这个字段的值,就合法;没这个字段的值,就非法。

也许你可以考虑下用UrlRewriter做伪静态化,更优雅

http://yongtree.iteye.com/blog/263970

写个过滤器Filter
[code="java"]
public class TestFilter implements Filter{
/* (non-Javadoc)
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub

}

/* (non-Javadoc)
 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
 */
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest req = (HttpServletRequest)request;
    HttpServletResponse res = (HttpServletResponse)response;
    System.out.println(req.getRequestURL());
    System.out.println();
    if (req.getRequestURI().endsWith(".action")){
        chain.doFilter(request, response);
        return;
    }

    .....
              .....     

    chain.doFilter(req, res);
}

/* (non-Javadoc)
 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
 */
public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub

}

}
[/code]

记得配置web.xml

拦截器里面也可以获取request啊!

struts.action.extension=jsp这样就只能.jsp访问了

如果Struts2的URL后缀是.action,那么.jsp后缀的URL Struts2是无法搞定的,所以LZ想用拦截器搞定.jsp的逻辑是没办法搞定的。

LZ可以说出自己这样做要解决什么问题,也许LZ的方向从根本上就错了,倒不如把原始的问题跑出来,大家看如何解决