2016-04-21 42 views
2

我目前正在尝试制作一个CMS项目,在那里我将制作一个所谓的“blogsite”,就像wordpress一样。我面临的问题是我想通过url直接访问博客网站。Struts2 - 从错误页面获取url

喜欢的东西 本地/ CMS/SITE_NAME

通常这将是一个404错误,因为没有任何将要出现映射,所以我通过

<error-page> 
    <error-code>404</error-code> 
    <location>/checkBlogUrl.action</location> 
</error-page> 

逮住它在web.xml所以我可以在那里处理URL请求,查询网站,如果它存在,则转发页面到那里,如果不是error.jsp。

我目前正试图使它工作的代码是

HttpServletRequest request = ServletActionContext.getRequest(); 

    String a = request.getServerName() +" : " + request.getRequestURI() 
      + " : "+ request.getServletPath() +" : "+ request.getLocalName(); 
    System.out.println(a); 

其黯然返回此

mycms:/CMS/checkBlogUrl.action:/checkBlogUrl.action:mycms

我如何获得site_name? 或者,有没有更好的方法来“转发”数据库查询的网址?

+0

你想做什么?重定向到一个URL? – Babel

+0

我想在sitename上做一个查询基础,并将该sitename传递给一个struts2动作,该动作将为我的网站名称加载我的磁贴。例如。 thisismysite.wordpress.com,如果我访问,wordpress会将我发送到我创建的博客网站。我只想在locahost的URL格式中做这样的事情:8080/CMS/sitename –

+1

welp im stupid。我刚刚发现了关于struts2的通配符。会玩一会儿 –

回答

2

我没有在web.xml中使用错误页面,而是将其更改为命名参数。

把$ {requestScope ['的javax.servlet:

<action name="/*" class="checkBlogUrl"> 
    <param name="blogSiteUrl">{1}</param> 
    <result type="redirectAction"> 
     <param name="actionName">checkBlogUrl</param> 
     <param name="blogSiteUrl">{1}</param> 
    </result> 
</action> 

正如安德烈Ligios注意,所以这个问题是不可行的

编辑的web.xml错误页面将下降原始请求URI。 error.request_uri']}在JSP页面会给你的URI,那么也许你可以将它传递给一些或另一个行动