我的主页面:  这个页面在执行的时候出现问题
<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
  <head>
    <html:base />
    
    <title>index.jsp</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->  </head>
  
  <body>
    <logic:present name="username" scope="session">
    <h4>欢迎<bean:write name="username"/></h4>
    </logic:present>
    <logic:notPresent scope="session" name="username">
    <h4>您还未登陆</h4>
    </logic:notPresent>
    <html:errors/>
    <center> 
      <html:link href="userLogon.jsp">登陆</html:link>
      <logic:present name="username" scope="session"> 
        <html:link forward="logout">注销</html:link>
       </logic:present> 
    </center>
  </body>
</html:html>
问题提示是:
009-3-4 17:23:02 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Cannot create rewrite URL: java.net.MalformedURLException: Cannot retrieve ActionForward named logout
at org.apache.struts.taglib.html.LinkTag.calculateURL(LinkTag.java:467)
at org.apache.struts.taglib.html.LinkTag.doStartTag(LinkTag.java:341)
at org.apache.jsp.index_jsp._jspx_meth_html_005flink_005f1(index_jsp.java:371)
at org.apache.jsp.index_jsp._jspx_meth_logic_005fpresent_005f1(index_jsp.java:344)
        后面省略好多....
我的struts-config.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="userLogonForm" type="com.ss.struts.form.UserLogonForm" />  </form-beans>     <global-forwards>       
         <forward 
               name="logout"
               path="/logout.do"/>                
    </global-forwards>
  <action-mappings >
    <action
      attribute="userLogonForm"
      input="/userLogon.jsp"
      name="userLogonForm"
      path="/userLogon"
      scope="request"
      type="com.ss.struts.action.UserLogonAction">
      <forward name="failed" path="/userLogon.jsp" />
      <forward name="success" path="/index.jsp" />
    </action>
    <action
       path="/logout"
       type="com.ss.struts.action.UserLogoutAction"
       scope="request">
       <forward name="return_index" path="/index.jsp"/>
    </action>
  </action-mappings>  <message-resources parameter="com.ss.struts.ApplicationResources" />
</struts-config>需要说明的是,再没有在主页面加入:
<html:link forward="logout">注销</html:link>
这一句时程序能正常运行.我的actionpackage com.ss.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class UserLogoutAction extends Action{
    public ActionForward execute(ActionMapping mapping,
     ActionForm form,
     HttpServletRequest request,
     HttpServletResponse response)throws Exception
     {
             HttpSession session=request.getSession();
             String username=(String)request.getAttribute("username");
             if(username!=null)
              session.removeAttribute("username");
             return mapping.findForward("return_index");//return_index定义过了
     }

}

解决方案 »

  1.   

    Struts HTML标签库(一) 分类:技术纵横2005.5.19 10:24 作者:轩缘 | 评论:1 | 阅读:377 
    Struts HTML标签库与标准的HTML元素有相同的功能.在Struts中提倡使用Struts HTML标签.
    Struts HTML标签库分为三类:用于生成基本的HTML元素标签
    用于生成HTML表单的标签
    显示错误或正常消息的标签
    <html:html>标签:
           用于生成HTML的<html>元素.标签有一个lang属性用于显示用户使用的语言
           <html:html lang="true">      <html:base>标签:
           用于生成HTML的<base>元素,用来生成当前网页的绝对url路径
           如果在网页中使用了该标签,当该网页引用同一个应用的其他网页时,只需给出相对于当前网页的相 对URL路径<html:link>标签:
           由于生成HTML的<a>元素
           重要属性:
                 forward:指定全局转发链接
                 href:指定完整的URL链接
                 page:指定相对于当前网页的URL
           例子:
                 1. 创建全局转发链接
                     首先,在配置文件中定义<forward>元素:
                            <global-forwards>
                                 <forward name="index" path="/index.jsp"/>
                            </global-forwards>
                      接着,在JSP中创建标签:
                             <html:link forward="index">
                                     Link
                             </html:link>
                 注意:forward属性只能引用Struts配置文件中<global-forwards>内的<forward>子元素,如果引用<action>内的将抛出下面异常:Cannot create rewrite URL:Java.net.MalformedURLException:Cannot retrieve ActionForward上网搜一下!!
      

  2.   

    我没有引用action内的啊,我引用的是global里面的logout啊:
    <global-forwards>      
            <forward 
                  name="logout" 
                  path="/logout.do"/>                
        </global-forwards>