日期:2014-05-18  浏览次数:20694 次

struts简单的想不通问题,

(1)<global-forwards>里面定义的定位经过 action定位后不显示其url,显示的是上一个url,但在action内部定义的forwards经过 acton定位后显示其url,这是怎么回事?
比如: 
如果使用全局的 forwards
<global-forwards>
    <forward
  name="sucess"
  path="/sucess.jsp"/>
  </global-forwards>
当在action中使用mapping.findForward("sucess")后,地址栏的url没有变还是以前的.
如果在action内部定义了 forward然后在action中使用mapping.findForward("sucess")后,地址栏的url变成了
sucess.jsp

(2)
在第一次提交表单后,url后面会多了这个一个东东"jsessionid=D40BD5A9A434FCA7158E0CB2FE3B7A1B"这个是什么啊?并且如果刷新再次提交就再也不会多这个东东了,怎么回事?


------解决方案--------------------
一般来说如果在action里边定义与全局forward同样名字的forward的时候是首选action里边的映射地址吧.
------解决方案--------------------
jsessionid是会话ID
------解决方案--------------------
不知道。。。
------解决方案--------------------
其实sessionid 在客户端第一次访问服务器的时候都是带在后面的。因为服务器并不知道你的客户端有没有启用cookie,一旦服务器端发现客户端的cookie没有禁用,就采用cookie来维持会话id。不然每天都会在URL后面加上jsessionid,这是另一种维持会话的方式。不信你把cookie禁用试试。
其实就是struts调用了String encodeURL(String url)这个方法。
另:
forward和sendRedirect是两种不同的转向方法,前者不带request,后者又叫重定向。采用前者地址栏是原来的URL,而后者地址栏是新的。这也是Struts实现的两种方法。
把JSP基础再好好学一学。呵呵!
------解决方案--------------------
我在struts-config里面将redirect="true"后,照样是之前的地址