web.xml里面这么配置了一下,我struts的配置文件名叫struts-config.xml:<filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
      <init-param>
          <param-name>config</param-name>
          <!-- 这里我有些不明白,struts-default.xml,struts-plugin.xml我在struts的源码里也没找到,我自己的工程里也没有,是看网上说要写上就写上了,不写上反tomcat启动的时候倒就报错了  -->
          <param-value>struts-default.xml,struts-plugin.xml,struts-config.xml</param-value>
      </init-param>
</filter>
 
<filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
</filter-mapping>
struts-config.xml里面是这么写的:<package name="struts2" extends="struts-default">
      <action name="zzhjgTree" class="cn.zssoft.web.struts.action.zzhjgTreeAction">
      </action>
</package>
zzhjgTreeAction里是这么写的:import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;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 zzhjgTreeAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException{
                  //具体代码了,但是执行不到这里来
         }}
不知道是哪里出了问题,实在不知道了,请各位高手帮忙解决下

解决方案 »

  1.   

    struts2的配置文件是不需要在web.xml里面配置的
    你是不是struts2的jar包没导入啊,
    不知道你是什么问题,也没说什么错误
      

  2.   

    LZ在web.xml的配置中有误区
    <init-param>
              <param-name>config</param-name>
              <!-- 这里我有些不明白,struts-default.xml,struts-plugin.xml我在struts的源码里也没找到,我自己的工程里也没有,是看网上说要写上就写上了,不写上反tomcat启动的时候倒就报错了  -->
              <param-value>struts-default.xml,struts-plugin.xml,struts-config.xml</param-value>
          </init-param>struts2的主配置文件的命名指定不是在这里的,默认的主配置文件是struts.xml如果你要指定struts2配置文件的话,要在一个.properties文件中修改,具体名字忘了。struts-config.xml应该是struts1中的配置文件的名字吧。只需把其名称改为struts.xml即可
      

  3.   

    非常可惜的是:
    Struts2的配置文件名 是在struts2源码里面就写死了是struts.xml,不能像struts1一样去配置我们的配置文件名称.!  只能叫struts.xml,而且必须放在classpath根目录下.!
      

  4.   

    我是曾经也带着这个困惑去找了源码的人, 他的配置文件名称就是写死的struts.xml,而且从classpath获得,  不是从init-param里面来的.!
    不要把struts2当struts1用, 毕竟两个框架就不是一个东西.!
      

  5.   

    只需把其名称改为struts.xml即可
      

  6.   

    public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) throws IOException{
                      //具体代码了,但是执行不到这里来
             }以上是struts1的方法签名格式。struts2如下:public String execute() throws Exception {
       
       return SUCCESS;
    }
      

  7.   

    struts2里面好像就struts.xml,web.xml这两个东西吧,其中web.xml只要配 <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
      

  8.   

    我把web.xml改了,然后action的类名也改了,已经可以跳转到我需要执行的方法内部了,谢谢大家,但是还有以下问题:我以前是通过request.getParameter("pageid");像这种方式得到参数,现在应该怎么传递呢?
      

  9.   

    在你的Action类中添加
    private int pageid; 并添加get/set方法, Struts2会自动给你填充请求参数的.!这个不用你操心,你只需要在action中设置与请求参数name一样的属性就可以
      

  10.   

    Struts 2主要使用的配置文件如下
    (1)web.xml:必需的配置文件, 位于/WEB-INF/,Web部署描述符, 包含所有必需的框架组件;
    (2)struts.xml:可选的配置文件,位于/WEB-INF /classes/, 主配置文件,包含result、action映射、拦截器等等;
    (3)struts.properties:可选的properties文件,位于 /WEB-INF/classes/,包含框架属性信息;
    (4)struts-default.xml:可选的配置文件,位于/WEB- INF/lib/struts2-core.jar,由Struts提供的默认配置文件;
    (5)struts-default.vm:可选的配置文件,位于/WEB-INF /classes/,由velocity.properties引用的默认宏;
    (6)struts-XXX-plugin.xml:位于每一个插件JAR文件的根目录下,为插件的可选配置文件,格式同struts.xml;
     (7)velocity.properties:位于/WEB-INF /classes/,用以覆盖默认的Velocity配置。
    Struts 2加载配置文件的顺序如下:
    (1)struts-default.xml (捆绑在Core JAR中)
    (2)struts-XXX-plugin.xml (在其它JAR包中,可以有多个)
    (3)struts.xml (由应用提供),该文件中可以包含其他的多个文件。
    在部署描述符中只需要进行如下配置:
    <filter>  
       <filter-name>struts2</filter-name>  
       <filter-class>  
         org.apache.struts2.dispatcher.FilterDispatcher  
       </filter-class>  
    </filter>  
    <filter-mapping>  
       <filter-name>struts2</filter-name>  
       <url-pattern>/*</url-pattern>  
    </filter-mapping> 
    但在Struts 2.1.3版本后,建议使用StrutsPrepareAndExecuteFilter。
    Struts2构建在XWork的基础之上,有效地降低了组件间的耦合性,请求参数的访问可以通过类似于JavaBean property的方式进行,楼上正解。呵呵。
      

  11.   

    我以前用的out.print(jsonStr);这种方式返回字符串
    现在不知道怎么把这个jsonStr返回
    我页面loader:new Ext.tree.TreeLoader({dataUrl:"zzhjgTree.action"})这样写的,只想得到字符串
    action里不知道怎么返回
    struts。xml里面不知道应该怎么配置
    <action name="zzhjgTree" class="cn.web.struts.action.zzhjgTreeAction">
    </action>
      

  12.   

    你是说struts2做ajax.?Struts2.1.7开始可以直接返回json视图的 添加struts2-jsonplugin.jar
    你的package继承json-default
    <action name="" class="">
        <result name="xxx" type="json">
            <param name="root">OGNL取你要返回的对象</param>
        </result>
    </action>
    当然  LZ可以用这种
    action中定义StringBufferInputStream inputName类型的属性,添加get/set
    你就返回一个json串就可以了
    <result name="xxx" type="stream">
      <param name="contentType">text/plain</param>
      <param name="inputName">inputName</param>
    </result>
    还有一种:
    ServletActionContext.getResponse().getWriter().print("{.....}")也行!
      

  13.   

    public class zzhjgTreeAction extends ActionSupport
    你看下这个类
      

  14.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    <!-- 定义Action -->
    <package name="sosee"  extends="struts-default"> <!-- 定义Login的Action -->
    <action name="add" class="com.sosee.action.AddPersonAndSon"> <!-- 定义处理结果与资源之间的映射关系 -->
    <result name="success">/welcome.jsp</result>
    <result name="input">/index.jsp</result>
    </action>
    </package>
    </struts>
    上边的是放在src目录下的struts.xml配置格式
    下边是web.xml文件里边的配置
             <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    加入jar文件,如果你用的是struts2的话,这个配置不会有错。
      

  15.   

    我现在是这么做的
    jsonplugin-0.31.jar我已经导进去了
    zzhjgTreeAction:public class zzhjgTreeAction extends ActionSupport {
        public String  execute() throws IOException{
        json = XXX;//已经拼好了json格式的数据放在这里,不知道咋办
        return SUCCESS;
        }
    }struts.xml:<package name="json" extends="json-default">
      <action name="zzhjgTree" class="cn.zssoft.web.struts.action.zzhjgTreeAction">
    <result type="json">
               <param name="includeProperties">success</param>
            </result>
      </action>
    </package>页面js:
     loader:new Ext.tree.TreeLoader({dataUrl:"zzhjgTree.action"})就是这样了,不知道哪里不合适,页面没有数据返回
      

  16.   

    我刚才上面的回复你没看.?
    result里面这样写!
    <param name="root">json</param>
      

  17.   

    改了
    <result name="jsonStr"  type="json">
    <param name="root">jsonStr</param>
    </result>,总觉得zzhjgTreeAction里面怪怪的,好像联系不上
    我在里面添了个private String jsonStr; 
    添了get set方法
    public String  execute() throws IOException{
       jsonStr = json.toString();
       return jsonStr;
    }
    还是不行,没搞清楚原理,着急用,反倒费了事了
    还请大家再帮忙看看
      

  18.   

    返回String有个屁用..
    我都说了要你好好看我上面给你的配置.!
    都仔细看过了,,有问题再发吧.!  别要人一个劲的重复一个答案阿.!普通文本  返回一个StringBufferInputStream.! stream的视图是专门做返回普通字符串的ajax和文件下载的.!   视图类型都说明了要stream,你给String当然没反应.!