• Struts 学习之01(启航)


           前段时间个人开始学习struts,从今天起把一些个人的学习经历记录下来
           Struts 是一种基于SUN的J2EE技术的一种框架,主要技术还是servlet和JSP技术来
    实现的。通过模型+视图+控制(MVC)设计模式来设计出一种框架结构来统一目前个
    人自行使用的框架结构,使程序员,特别是新手可以很好的运用MVC来开发系统。
    struts更多的应用于视图,而把控制层交给Spring,而模型层用Hibernate做持久层。
    与后台的数据库相分离。
            框架有点像我们现实生活中的钢架构,比如说现在的厂房构建的时候都是用钢架构
    去构建,先用钢铁架设出一个厂房的整体结构,然后我们再加上如玻璃钢这些东西
    很快就能构建出一个厂房,而如果说按照原有的设计方式,就是建筑上来说,我们
    要用一砖一瓦,水泥呀石灰呀 一点点做上去的话,很慢的,所以说架构的出现以及
    框架的出现,无非就是方便我们开发,给我们主体部分相对来说已经固定死的早期
    程序员给我们提供的一种优秀的程序来组成,然后剩余的部分由我们自己来设计,而
    struts就是其中的一种
          其官方站点:http://struts.apache.org/ 目前最新版本:struts2.0
          首先看看MVC,下图

     上图是大部份B/S结构程序扬采用的一种模型,也将MVC的基本工作原理描述清楚!
    下面是模型 1:

    而新手一般都是将jsp写的有点像 asp,就是将大量的代码写在jsp中,我目前就是如此,虽然使用JAVABEAN
    可以减少一部分 代码,但页面中依然还会存在少量JAVA代码,也因此才决定来开始学习Strits,那么现在来看看Struts的工作原理



    针对上图的一些说明如下:
    1.Servlet是Struts框架最重要的组件,它通过org.apache.struts,action.ActionServlet来实现。
    2.struts-config.xml是配置文件,它负责将请求转发给适当的Action对象,如果该对象不存
    在,ActionServlet会先创建这个对象
    3.Action类负责调用模型的方法,更新模型的状态,并帮助控制器应用程序的流程

              下面我来开始我的第一个Struts程序,我所使用的工具是:
                        JDK1.5+ Eclipse 3.2.1  +MyEclipse5.1.0GA+Struts1.2+Tomcat 5.5.20
             Step1:新建项目  File -->New-->Project 选择 MyEclipse -->WebProject  输入项目名MyFirstStruts
             Step2:   为项目添加Struts  选中项目名 右键-->MyEclipse-->Add Struts Capabilities   选择Struts1.2
                           将com.yourcompany.struts改为自己的fengyan.struts
                            加载完后我们可以在WebRoot/WEB-INF下面看到一些标签文件,我们先看看web.xml
                            我们可以看到servlet对象和servlet部署 的配置信息 如下

    servlet对象
    servlet部署

    上面说明servlet的访问路径为 ***.do,只要是.do的程序它就导向action对象,而通过servlet对象可知这个action对象,它产生一个org.apache.struts.action.ActionServlet这样一个类对象,而这个对象产生后它所读取的配置文件是通过参数config指定也即为/WEB-INF/struts-config.xml,那么它就根据该文件中的描述来运行,现在我们再看看struts-config.xml文件!

    struts-config.xml文件

    <data-sources/>配置数据源,<form-beans/>表明表单bean的产生,<global-exception/>用于全局异常的处理
    <g;obal-forwards/>主要是全局跳转,<action-mapping/>是action映射的,它和formbean是最重要的,最后一个一般是国际化处理·它读取的就是一个属性文件~
    好了,在明白这上面这些后,开始创建strurts了,为了方便,我使用可视化的开发,
             
             step4:   打开struts-config.xml 切换到view; 右键-->New-->Form,Action and JSP.这样做的目的是同时生成
                          Form,action 以及JSP~在Use case 中输入User 在From properties Add  添加二个属性 userPwd
                         和 userName;切换到JSP 勾选create jsp form 在地址栏中 去掉/form就可以让它生成在我们的根
                         目录下了!确定后,看下struts-config.xml中给我们产生了哪些东东
                

    生成后的struts-config.xml

             说明:产生了一个userForm对象,它的类类型为fengyan.struts.form.UserForm,这个对象在action-mappings中会被调用,一般有请求路径为 /user的时候,将/user.jsp表单中的数据读取出来,读出来后写入到userForm属性中,而这个userForm就是刚刚定义的一个form-bean  那么userForm在接收到这些数据的时候就可以填充自己的属性了,这时我们来看看UserForm.java

    fengyan.struts.form.UserForm.java表单Bean

             这里面有二个我们刚刚定义的属性userName和userPwd,另外还有2个方法validate和reset,看名字就知道,validate方法是用来验证数据有效性的,而reset就是初始化,有点像我们表单中reset按扭的作用啦~

    public void reset(ActionMapping mapping, HttpServletRequest request) {
            
    //让userName初始化为fengyan
            userName = "fengyan";
        }

    启动tomcat  运行 效果如下:

             
                step5:   我们现在再加点,在该页面输入内容然后在另外一个页面来接收!产生一点我们为了传递,将
                            struts-config.xml中 scope值改为session!
                step6:    打开UserAction.java   可以看到里面有一个execute方法可以通过mapping来指定转向,当然,要转
                             向到的页面也要在action-mapping 中注册,修改后的struts-config.xml如下:

    修改后的struts-config.xml

                   step7:   现在回头写UserAction.java中的execute方法如下:

    public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) 
    {
            UserForm userForm 
    = (UserForm) form;// TODO Auto-generated method stub
            
            
    return mapping.findForward("show");
            
    //该show 就是上面在action-mapping中注册的键值值,指向show.jsp
        }

                   step8:   最后当然就是在show.jsp中将其读取出来。代码如下

    show.jsp

                总算写完了,最后看下运行效果。
                                                   

                      总结:整个模型运行流程为; 客户端的HTTP请求--> .do(控制器ActionServlet)-->struts-config.xml
                                 然后将input中的数据填充给actionform,然后提交给action处理,根据需要action会和后台的
                                  actionBean交互,(本例中是UserAction.java)最后action提交给jsp视图进行输出!

                 示例下载

              

  • 相关阅读:
    括号拼接字符串
    递归删除
    ES6实用常用用法
    @RequestBody与@ResponseBody注解
    (node:11224) UnhandledPromiseRejectionWarning: TypeError: this.getResolve is not a function
    npm安装webpack速度太慢解决方法
    Component template requires a root element, rather than just text.
    js操作cookie
    js在函数中发Ajax请求返回undefined问题
    SQL 登录时提示:Server returns invalid timezone. Need to set 'serverTimezone' property.
  • 原文地址:https://www.cnblogs.com/eflylab/p/599898.html
Copyright © 2020-2023  润新知