在工程中的WebRoot中有user文件夹,里面有userInfo.jsp和userInfoUpdate.jsp文件。在userInfo.jsp页面中,想要跳转到userInfoUpdate.jsp,相应代码如下:
<form action="user/userInfoUpdate.jsp" method="post">
<% session.setAttribute("uvo",uvo);%>    //此处为了传值,无关紧要
<input type="submit" value="修改"/>
</form>
然后到了userInfoUpdate.jsp中,这是一个修改页面,相应代码如下:
<form action="user.do?command=userInfoUpdate" method="post">    //采用DispatchAction
                ......
<input type="submit" value="修改"/>
</form>
修改完后点击提交时,地址栏的地址变成了http://localhost:8080/title/user/user.do?command=userInfoUpdate问题是其他的jsp页面请求后(其他页面没有出现直接由一个页面跳到另一个页面的情况),地址均为类似http://localhost:8080/title/user.do?command=userInfoUpdate这种形式,就是说并没有中间的.../user/...。请问,为什么会多出/user/?我想可能是userInfo.jsp页面中action="user/userInfoUpdate.jsp"中的user/起的作用吧。两个jsp页面之间进行跳转,怎么会传递第一个页面的部分请求(如/user)呢?可能问题问得不是太明白,现在思路有些乱,不知道该怎么描述。

解决方案 »

  1.   

    第一次submit路徑是user/userInfoUpdate.jsp,所以URL變成
    http://localhost:8080/title/user/userInfoUpdate.jsp 此時 submit 到 user.do
    當然就是 http://localhost:8080/title/user/user.do想變成 http://localhost:8080/title/user.do的話 
    在 userInfoUpdate.jsp 的 action改成
    <form action="../user.do?command=userInfoUpdate" method="post">    
        //采用DispatchAction
                        ......
        <input type="submit" value="修改"/>
    </form>
      

  2.   

    String path = request.getContextPath();
    在你所有的action都写成类似<%=path%>/....
      

  3.   

    所有的跳转都在struts.config里面设置的 
      

  4.   

    在user.do前面加入“/”就好了
      

  5.   

    果然可以.....但是为啥要用action="../user.do?command=userInfoUpdate",请求前半部分必须是工程的根目录的URL吗?
      

  6.   

    请求的路径从应用的根开始是struts中的规定吗?最开始jsp页面直接放在WebRoot下,没想过这个问题,以为只要请求的最后是*.do这样就可以被ActionServlet拦截到。
      

  7.   

    这个和什么mvc框架没关系,你要用jsp也会出一样的问题
      

  8.   

    这样写说是The requested resource (/user.do) is not available,为啥
      

  9.   


    那是因为你的struts中配置的action的path不是/user
      

  10.   

    这是配置文件
    <action path="/user"
            type="package.action.UserAction"
    name="userDynaForm"
    scope="request"
    parameter="command"
    >
    ......
    </action>
    另外地址栏变成了http://localhost:8080/user.do?command=userInfoUpdate。jsp页面里“/”应该对应的是客户端的相对地址,即这里的http://localhost:8080,网上翻到的(http://www.blogjava.net/meil/archive/2006/10/10/74167.html)。而如果把userInfoUpdate.jsp中的action变为action="/title/user.do?command=userInfoUpdate",这样就可以了。