[转帖]JSP流行模板Struts的安装配置_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3815 | 回复: 0   主题: [转帖]JSP流行模板Struts的安装配置        下一篇 
white
注册用户
等级:少校
经验:1327
发帖:305
精华:0
注册:2011-7-21
状态:离线
发送短消息息给white 加好友    发送短消息息给white 发消息
发表于: IP:您无权察看 2011-8-25 17:15:30 | [全部帖] [楼主帖] 楼主

Struts最早于2002年5月作为Jakarta项目的组成部分问世,(主页:http://jakarta.apache.org/struts/index.html) Jakata项目由Apache Foundation.运做。项目的创立者希望该项目的研究改进和提高Java Server Pages (JSPs)、servlet、标签库以及面向对象的技术水准。Struts为使用MVC体系来编写应用提供了一个架构。Struts使用“ActionMapping”,它允许servlet将用户的请求转变为应用行为。ActionMapping通常指定一个请求的路径、在请求上进行动作的对象类型,以及指定其它需要的属性。 

  Action对象作为ActionMapping的一个部分使用,负责处理请求,并且发送响应回适合的视图(通常是一个Web浏览器),或者传送请求至适合的模型。 

  在模型和视图间的桥是一个form bean,它可以通过继承org.apache.struts.action.ActionForm得到。form bean用来保存处理前的用户数据,或者显示返回给用户的模型数据。Struts包含有自定义的标签,它可以由创建的form bean中自动组合字段。 

  在实践中用户请求JSP页面,控制器servlet接收请求并决定由哪个应用处理它。Action对象传送该请求到包含有接收商业逻辑的JavaBean中。商业逻辑bean将连接数据库并进行查询,接收结果,然后返回结果给Action对象。Action对象将结果作为请求的一部分存放到一个form bean中。一旦收集完请求的全部数据,就可以格式化结果并且显示。最后是JavaServer Page以HTML表格的形式将结果显示出来。 
JAVA天堂 

  Struts的安装配置 
  我��配置是居于Tomcat4.0以上版本讨论,其他的AppServer大致相同。 
  1:得到Struts1.1 

 http://www.apache.org/dist/jakarta/struts/binaries/jakarta-struts-1.1-rc1.zip


  到今天(2003-05-11)为止Struts最新为struts1.1rc1版. 
  2:设置 
  把Struts.jar Copy到$Tomcat_home/common/lib 或你使用Struts的Appaction下的WEB-INF/lib下 
  在你使用Struts的Appaction下web.xml中增加下列配置 

  <servlet>   <servlet-name>action</servlet-name>   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>   <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>3</param-value>   </init-param>      <init-param>   <param-name>detail</param-name>   <param-value>3</param-value>   </init-param>   <load-on-startup>2</load-on-startup>   </servlet>      <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>      <!-- Nested Tag Library Descriptor -->   <taglib>   <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>   <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>   </taglib>      <!-- Template Tag Library Descriptor -->   <taglib>   <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>   <taglib-location>/WEB-INF/struts-template.tld</taglib-location>   </taglib>   <!--Tiles Tag Library Descriptor-->   <taglib>   <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>   <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>   </taglib>

    其中这个配置文件是在Tomcat启动的时候把Struts加载到内存中,以使这个Application能使用Struts的设计模式。其中最前面的代码指加载ActionServlet,其中其配置文件是在/WEB-INF/struts-config.xml(这是初学者最重要的配置文件,经常要使用),而后面的代码与前面的也差不多,是为了加载一些标签库,方便重用显示的组件。(这个是比较新的内容,我个人的意见是,如果你你是刚学Struts的话,那先把这方面省去。以下是一个有经验的使用者的心得! 

  1、 如果你的项目非常紧,并且项目组中又没有富有经验的Struts开发人员,建议不要冒然采用Struts。Struts的掌握需要一个过程,对于一个熟练的JSP程序员,自学大概需要半个月左右的时间。如果结合titls,则需要更长的时间。 

  2、 如果你在网页中大量运用taglib,那么你的美工将做出部分牺牲。当你结合Tiles,功能增强的同时,这种牺牲尤为明显。当然,你对功能和美观的取舍由你自己决定。 

  3、 Taglib是一个好东西,但灵活运用它却需要一个过程,如果你不想在Taglib上花太多的时间,那么只需理解与FORM有关的几个标记,其它的标记就放着吧,以后再看,先去研究ActionServlet和Struts-config.xml,你会觉得很有成就感。 
JAVA天堂 

  4、 Struts的诞生时间虽不长,但与之相关的工具却越来越多,如果你是用Jbuilder作为开发工具,那我可以为你推荐几款优秀的open tools,极大的提高开发效率。 

  以下是一个使用Struts的例子,但为了能使初学者迅速走进Strust的大门,我先省去 Tiles,与taglib部门,这样Strust看起来就相当简单了! 

 reg.jsp---用户注册页面

北京联动北方科技有限公司 <html> 北京联动北方科技有限公司  <head> 北京联动北方科技有限公司  <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 北京联动北方科技有限公司  <title>注册窗口</title> 北京联动北方科技有限公司  </head> 北京联动北方科技有限公司   北京联动北方科技有限公司  <body> 北京联动北方科技有限公司  <form name="form1" method="post" action="regok.esp"> 北京联动北方科技有限公司  <p> 用户名: 北京联动北方科技有限公司  <input name="username" type="text" id="username"> 北京联动北方科技有限公司  </p> 北京联动北方科技有限公司  <p> 密码: 北京联动北方科技有限公司  <input name="password" type="password" id="password"> 北京联动北方科技有限公司  </p> 北京联动北方科技有限公司  <p> 北京联动北方科技有限公司  <input type="submit" name="Submit" value="提交"> 北京联动北方科技有限公司  <input type="reset" name="Submit2" value="重置"> 北京联动北方科技有限公司  </p> 北京联动北方科技有限公司  </form> 北京联动北方科技有限公司  </body> 北京联动北方科技有限公司  </html> 北京联动北方科技有限公司

    与一般的注册页面没有什么区别(当然也是因为我没有用到taglib,tiles而已)  

北京联动北方科技有限公司UseregActiom.java

package com.Test;
北京联动北方科技有限公司 import java.io.IOException;
北京联动北方科技有限公司 import java.util.Locale;
北京联动北方科技有限公司 //servlet import
北京联动北方科技有限公司 import javax.servlet.ServletException;
北京联动北方科技有限公司 import javax.servlet.http.HttpSession;
北京联动北方科技有限公司 import javax.servlet.http.HttpServletRequest;
北京联动北方科技有限公司 import javax.servlet.http.HttpServletResponse;
北京联动北方科技有限公司 //struts import
北京联动北方科技有限公司 import org.apache.struts.action.Action;
北京联动北方科技有限公司 import org.apache.struts.action.ActionForm;
北京联动北方科技有限公司 import org.apache.struts.action.ActionForward;
北京联动北方科技有限公司 import org.apache.struts.action.ActionMapping;
北京联动北方科技有限公司 import org.apache.struts.util.MessageResources;
北京联动北方科技有限公司 //finance import
北京联动北方科技有限公司 import com.Test.action.UserForm;
北京联动北方科技有限公司 import com.Test.manager.UserManager;
北京联动北方科技有限公司 import com.Test.entity.User;
北京联动北方科技有限公司 
北京联动北方科技有限公司 public class UseregAction extends Action {
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 public ActionForward execute(ActionMapping mapping,
      北京联动北方科技有限公司 ActionForm form,
      北京联动北方科技有限公司 HttpServletRequest request,
      北京联动北方科技有限公司 HttpServletResponse response)
      北京联动北方科技有限公司 throws IOException, ServletException {
            北京联动北方科技有限公司JAVA天堂
            北京联动北方科技有限公司北京联动北方科技有限公司 try{
                  北京联动北方科技有限公司 "取得UserForm的数据,当然UserForm是封装了注册页面上的数据!
                  北京联动北方科技有限公司 UserForm userForm=(UserForm)form;
                  北京联动北方科技有限公司 "这两段代码是用来向数据库增加数据的,与以前的一样。
                  北京联动北方科技有限公司 UserManager userManager=new UserManager();
                  北京联动北方科技有限公司 User user=userManager.formToEntity(userForm);
                  北京联动北方科技有限公司 userManager.add(user);
                  北京联动北方科技有限公司 //Insert into DataBase a Userinfo
            北京联动北方科技有限公司 }catch(Exception ex){
            北京联动北方科技有限公司 return mapping.findForward("error");
      北京联动北方科技有限公司 }
      北京联动北方科技有限公司 return mapping.findForward("success");
      北京联动北方科技有限公司 //ForWard is "/msg.jsp"
北京联动北方科技有限公司 }
北京联动北方科技有限公司 }
北京联动北方科技有限公司 
北京联动北方科技有限公司 
UserForm.java
北京联动北方科技有限公司 
北京联动北方科技有限公司 
package com.Test.action;
北京联动北方科技有限公司 import java.util.*;
北京联动北方科技有限公司 import java.io.Serializable;
北京联动北方科技有限公司 //servlet import
北京联动北方科技有限公司 import javax.servlet.ServletException;
北京联动北方科技有限公司 import javax.servlet.http.HttpSession;
北京联动北方科技有限公司 import javax.servlet.http.HttpServletRequest;
北京联动北方科技有限公司 import javax.servlet.http.HttpServletResponse;
北京联动北方科技有限公司 //struts import
北京联动北方科技有限公司 import org.apache.struts.action.ActionMapping;
北京联动北方科技有限公司 public class UserForm extends ValidatorForm implements Serializable{
      北京联动北方科技有限公司JAVA天堂
      北京联动北方科技有限公司北京联动北方科技有限公司 //在Struts1.1以前通常Form继承ActionForm
      北京联动北方科技有限公司 private String username;
      北京联动北方科技有限公司 private String password;
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 public UserForm(){
            北京联动北方科技有限公司 
      北京联动北方科技有限公司 }
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 public String getUsername(){
            北京联动北方科技有限公司 return this.username;
      北京联动北方科技有限公司 }
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 public void setUsername(String _username){
            北京联动北方科技有限公司 this.username=_username;
      北京联动北方科技有限公司 }
      北京联动北方科技有限公司 
      北京联动北方科技有限公司 
      北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论