为什么redstarstar(红星星)还不来,很忙吗?
要不yanchang (笨笨) 你先说说吧?

解决方案 »

  1.   

    MVC(model-view-controller)也就是JSP的Model 2结构。
    Model 1与Model 1.5简单来说就是将你的所有Java代码都写在JSP页面与javabean中,也就是通过你的JSP页面与javabean实现所有的业务逻辑。
    Model 2则是JSP页面中只有少量的Java代码,然后通过路径的mapping将所有的Http请求都传给一个作为Controller的Servlet。在这个Servlet中调用相应的javabean或者EJB对请求进行处理,最后这个Servlet再forward到合适的JSP页面(也就是view)进行显示。MVC中的model我认为应该是那些保存状态的javabean(比如一个保存用户信息的bean)和所有的Entity bean。
    Model 1与Model 1.5的优点:开发简单。
    Model 1与Model 1.5的缺点:不好维护。
    Model 2的优点:好多。将逻辑彻底从JSP页面中分离,JSP页面只负责显示结果。提高了安全性。易于维护。
    Model 2的缺点:开发比较困难(但如果能利用好Struts,我觉得开发还是比较快的)
      

  2.   

    晚上我写个使用Struts的例子,就好明白了。
    Struts的网址:
    http://jakarta.apache.org/struts/doc-1.0.2/index.html
      

  3.   

    Struts的安装:我装的是struts-1.0.2,服务器是WebLogic6.1。1.在mydomain\applications\DefaultWebApp\WEB-INF建立lib将struts.jar拷贝过来。
    2.将所有的*.tld文件拷贝到mydomain\applications\DefaultWebApp\WEB-INF下。
    3.在web.xml中加入:
    <servlet>
    <!-- Standard Action Servlet Configuration -->
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>application</param-name>
    <param-value>ApplicationResources</param-value>
    </init-param>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>validate</param-name>
    <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet><!-- Standard Action Servlet Mapping -->
    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib> <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib> <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>
    附:有两次重新安装Struts后,weblogic启动时报错,我对比了weblogic带的web.xml与struts中带的web.xml发现只是在第二行有一些不一样,即<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 1(struts中是2).2//EN"。修改成2就可以正常启动了。
    4.在mydomain\applications\DefaultWebApp\WEB-INF下建立struts-config.xml文件,加入如下内容:
    <?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
    <struts-config><!-- ========== Form Bean Definitions =================================== -->
    <form-beans>
    </form-beans><!-- ========== Action Mapping Definitions ============================== -->
    <action-mappings>
    <!-- The standard administrative actions available with Struts -->
        <!-- These would be either omitted or protected by security -->
        <!-- in a real application deployment -->
        <action    path="/admin/addFormBean"
                   type="org.apache.struts.actions.AddFormBeanAction"/>
        <action    path="/admin/addForward"
                   type="org.apache.struts.actions.AddForwardAction"/>
        <action    path="/admin/addMapping"
                   type="org.apache.struts.actions.AddMappingAction"/>
        <action    path="/admin/reload"
                   type="org.apache.struts.actions.ReloadAction"/>
        <action    path="/admin/removeFormBean"
                   type="org.apache.struts.actions.RemoveFormBeanAction"/>
        <action    path="/admin/removeForward"
                   type="org.apache.struts.actions.RemoveForwardAction"/>
        <action    path="/admin/removeMapping"
                   type="org.apache.struts.actions.RemoveMappingAction"/>
      </action-mappings>
    </struts-config>
      

  4.   

    用户登陆程序演示:
    1.login.jsp
    <%@ page language="java" %>
    <%@ page contentType="text/html" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><!-- 声明使用Struts的标签 -->
    <html:html locale="true">
    <head>
    <title>Search</title>
    </head>
    <body>
    <html:form action="/test/login.do"> <!-- action中的路径与struts-config.xml对应 -->
    <html:text property="user" /> <!-- 文本框 -->
    <html:submit>Submit</html:submit> <!-- 提交按钮 -->
    </html:form>
    </body>
    </html:html>
    说明:点击Submit后,Http请求转到Struts中的servlet,这个servlet在struts.jar中,它会调用一个类(用户自己编写的,即下面的LoginAction.class)由它进行逻辑控制。
    2.LoginAction.class--Controller
    package test;import org.apache.struts.action.*;
    import javax.servlet.ServletException;
    import javax.servlet.http.*;
    import java.io.*;public class LoginAction extends Action
    {
    public ActionForward perform(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
    throws IOException, ServletException
    {
    HttpSession session=request.getSession(); //获得当前的session对象 String user=(String)request.getParameter("user"); //获得用户名 UserInfo ui=new UserInfo();             //用一个对象保存用户的用户名,相当于model
    ui.setUserName(user);
    session.setAttribute("userinfo",ui);    //将对象放入session中 if(user.equals("Mike"))
    {
    return (mapping.findForward("success")); //转向success.jsp页面,在struts-contig.xml定义
    }
    return (mapping.findForward("failed"));     //转向failed.jsp页面,在struts-contig.xml定义
    }
    }
    3.LoginForm.class—Model
    package test;import javax.servlet.http.*;
    import org.apache.struts.action.*;public class LoginForm extends ActionForm
    {    public LoginForm()
        {
        } public void setUser(String user)
    {
    this.user=user;
    }
    public String getUser()
    {
    return user;
    }
    private String user="";
    }
    说明:保存提交的表单中的信息,即在一次会话中,用户提交表单后,表单中的所有信息都被保存起来,当用户返回此页面时,用户输入的所有信息均保留。
    4.UserInfo.class--Model
    package test;public class UserInfo
    {    public UserInfo()
        {
        } public void setUserName(String userName)
    {
    this.userName=userName;
    } public String getUserName()
    {
    return userName;
    } private String userName="";
    }
    说明:一个保存当前会话信息的bean。
    5.success.jsp—view
    <%@ page language="java" %>
    <%@ page contentType="text/html" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <jsp:useBean id="userinfo" scope="session" class="test.UserInfo"/> <!-- userinfo与LoginAction中对应 -->
    <html:html locale="true">
    <head>
    <title>Search</title>
    </head>
    <body>
    Success!<br>
    Welcome <%=userinfo.getUserName() %>!<br>
    Welcome <bean:write name="userinfo" property="userName"/>!<!-- 用Struts提供的标签实现读取bean中信息 --><br>
    </body>
    </html:html>
    6.failed.jsp
    <%@ page language="java" %>
    <%@ page contentType="text/html" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <jsp:useBean id="loginform" scope="session" class="test.LoginForm"/> <!-- loginform与struts-config.xml中对应 -->
    <html:html locale="true">
    <head>
    <title>Search</title>
    </head>
    <body>
    Failed!<br>
    No one is called: <bean:write name="loginform" property="user"/>.<br>
    </body>
    </html:html>
    7.struts-config.xml
    在<action-mappings>与</action-mappings>中插入如下内容:
    <action path="/test/login" 
    type="test.LoginAction"
    name="loginform"
    scope="session"
    validate="false">
    <forward name="success" path="/test/success.jsp"/>
    <forward name="failed" path="/test/failed.jsp"/>
    </action>
    在<form-beans>与</form-beans>中插入如下内容:
    <form-bean name="loginform" type="test.LoginForm"/>
    8.将所有*.jsp文件拷贝到mydomain\applications\DefaultWebApp\test目录下,将所有*.class拷贝到mydomain\applications\DefaultWebApp\WEB-INF\classes\test下。
      

  5.   

    先感性的认识一下
    我还有不明白的,去jakarta.apache.org/struts/doc-1.0.2/index.html看看
    大家以为如何?
      

  6.   

    huyuefox(huyuefox) 兄:、
    你的感受如何?
      

  7.   

    在下载的zip中有Exmaples.war
    这是个例子吧
    是不是可以研究呢?准备结帐了!