有请 redstarstar(红星星)讲MVC,欢迎大家一起讨论

yanchang 2002-02-27 12:50:26
我所了解的很少,请朋友门讲讲有关mvc的知识和在项目开发中的应用
谢谢
...全文
22 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huyuefox 2002-03-04
还不是完全明白,学习体会中..
回复
yanchang 2002-03-01
huyuefox(huyuefox) 兄:、
你的感受如何?
回复
redstarstar 2002-03-01
他自带了两个例子,都不错。
回复
yanchang 2002-03-01
在下载的zip中有Exmaples.war
这是个例子吧
是不是可以研究呢?

准备结帐了!
回复
yanchang 2002-02-28
先感性的认识一下
我还有不明白的,去jakarta.apache.org/struts/doc-1.0.2/index.html看看
大家以为如何?
回复
redstarstar 2002-02-27
用户登陆程序演示:
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下。
回复
redstarstar 2002-02-27
struts.jar是Struts的类库。
回复
yanchang 2002-02-27
struts.jar是个例子吗?
回复
redstarstar 2002-02-27
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>
回复
yanchang 2002-02-27
非常感谢
我门看看
回复
redstarstar 2002-02-27
晚上我写个使用Struts的例子,就好明白了。
Struts的网址:
http://jakarta.apache.org/struts/doc-1.0.2/index.html
回复
redstarstar 2002-02-27
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,我觉得开发还是比较快的)
回复
huyuefox 2002-02-27
为什么redstarstar(红星星)还不来,很忙吗?
要不yanchang (笨笨) 你先说说吧?
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告