本人对MVC中传递数据的原理和方式还是比较清楚的。
原来mvc中页面与servlet之间数据的传输是:
在Servlet中通过request.setAttribute("","");
然后在jsp页面中通过request.getAttribute("","");
现在我想采用的是struts2.0进行action与jsp页面之间的传输,请问应该怎样?请具体一点的。
还有是要求是用struts标签写
<s:input name=""/>,
还有就是用struts2.0进行构建的话,那还能不能用DAO,DTO.
如果不用了话,那怎么来处理这些业务,不会都集中在action中
处理吧。

解决方案 »

  1.   

    在struts2.0中也可以通过以上方法来传递数据,通过
     HttpServletRequest request = ServletActionContext.getRequest();
    来得到REQUEST.或者是response,
    也可以通过将数据保存在属性中.例如在你的action中有一个属性String name;
    你在JSP页面中可以通过两种方法去拿
    1.<s:property value="name">
    2.通过ValueStack 从中拿出你的属性
    ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
    String name = (String)vs.findValue("name");
      

  2.   

    要啊 ,action中仅仅调用它们就行了
      

  3.   

    如果用struts2.0标签传值,还是有点问题。请高手赐教。
      

  4.   

    action中通过怎样的方式,来把数据传送到JSP页面中。
    (struts2.0)
      

  5.   

    我的Action代码如下:
    import java.sql.ResultSet;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.ex.util.DBManager;public class UserAction extends ActionSupport {
    //用户信息

    private Connection conn;
    private List list;
    private UserDAO userDao;
    private UserDTO userDto;
    public String execute() throws Exception {

    String operType = "";//操作类型
    conn = DBManager.getConn();
    HttpServletRequest request = ServletActionContext.getRequest(); 
    if("insert".equals(operType)){
    insert();
    }else if("modify".equals(operType)){
    modify();
    }else if("list".equals(operType)){
    //显示
    list();
    }else if("delete".equals(operType)){
        //删除
    delete();
    }else if("do_modify".equals(operType)){
    //修改
    do_modify();
    }else if("do_insert".equals(operType)){
    //添加
    do_insert();
    }else{
    return ActionSupport.ERROR;
    }
    DBManager.closeConnection(conn);
    return ActionSupport.SUCCESS;
    }




    }
      

  6.   

    这样写代码也是可以的但是也可以这样写import java.sql.ResultSet; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.ex.util.DBManager; public class UserAction extends ActionSupport { 
    //用户信息 private Connection conn; 
    private List list; 
    private UserDAO userDao; 
    private UserDTO userDto; 
    public String execute() throws Exception { String operType = "";//操作类型 
    conn = DBManager.getConn(); 
    public String insert(){ 
    return ActionSupport.SUCCESS; 
    }
    public String modify(){
    return ActionSupport.SUCCESS; 
    }
    //显示 
    public String list(){
    return ActionSupport.SUCCESS; 
    }
        //删除 
    public String delete(); 
    return ActionSupport.SUCCESS; 
    }//修改 
    public String do_modify(){
    return ActionSupport.SUCCESS; 
    }//添加 
    public String do_insert(){
    return ActionSupport.SUCCESS; 
    }
    }
      

  7.   

    然后再从URL上直接指向对应的方法里执行
      

  8.   

    在Action中由于其execute方法不含有,HttpServletRequest request对象
    我在action的execute方法,加入:HttpServletRequest request = ServletActionContext.getRequest(); 获得页面中的信息??
      

  9.   

    获得页面中的信息
    在ACTION里添加对应的属性就可以了
      

  10.   

    由于我是User做为一个Action的属性,因而不能够添加对应属性。
      

  11.   

    struts.xml中报错。
    严重: Exception starting filter struts2
    Error building results for action user in namespace  - action - file:/D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/webapps/UserManaging/WEB-INF/classes/struts.xml:7:56
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:340)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:429)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:205)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3693)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    Caused by: No result type specified for result named 'list', perhaps the parent package does not specify the result type? - result - file:/D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/webapps/UserManaging/WEB-INF/classes/struts.xml:8:24
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java:575)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:338)
    ... 35 more对应的struts.xml中配置如下:
    <?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>
    <package name="">
    <action name="user" class="com.ex.action.UserAction">
    <result name="list">/list1.jsp</result>
    <result name="showList">/user.action?operType=list</result>
    <result name="edit">/edit1.jsp</result>
    </action>
    </package>
    </struts>请各位高手帮忙指点一下。
      

  12.   

    <package name="" extends="struts-default">建议楼主先将struts2基本原理摸索清楚.问题就会自然解决了
      

  13.   

    struts2利用拦截器实现的action与jsp的值传递好像是靠LoaclModelDriven这个拦截器实现的。在action中定义一个属性,给该属性设置你需要传递的值,这些值就可已在jsp页面的值栈中拿到!至于在值栈中取数据就要用到OGNL表达式了!