• 转载 初学者必看——最简单最清晰的Struts2项目搭建流程


    https://blog.csdn.net/key0323/article/details/50773499

    在项目中想要使用Struts2框架,我该怎么做?从哪里开始?这是我的疑惑,我想也是很多初学者最大的疑惑。网上的论知识应有尽有,详细的说明与操作过程却是凤毛麟角。这两天的学习过程很有收获,因此在这里记录下来分享给大家,感觉会对初学者很有帮助。如果您对Struts框架已经有所了解,那么请抱着分析指正的态度来看。

    之前学习JavaWEB的时候曾经粗略的学习过一段时间的Struts2框架,相关概念与原理了解了很多。但转了一大圈下来,还是一头雾水,最大的疑问来自于。我现在想要搭建一个Struts的项目,那么究竟应该从哪开始怎么去做呢?。最近正在准备做毕业设计,项目打算使用SSH2的框架,因为作为一个未来的JavaWEB开发者,感觉Struts最基本的了解和使用还是应该掌握的,因此强逼着自己照着书上的案例一步一步做,完成几个小的案例。经过两天时间的努力,终于对于如何使用Struts搭建一个项目有了初步的认识。感觉网上这样详细而且具体的搭建流程几乎没有,但作为初学者却是最为需要的。因此在这里整理发布出来

    这篇博文不讲任何的原理与概念,因为相关的知识网上一抓一大把。由于个人的水平所限,因此本文所有的观点仅代表我个人的理解,不保证完全正确。如果有什么错误还请各位及时指正。

    本文的案例来自于《JavaWeb入门经典》一书

    下面开始正题

    第一个struts程序——最简单的Struts程序

    个人对于struts运行过程的理解:

    1、项目启动时会读取 web.xml 中配置的内容

    2、在web.xml中配置struts的过滤器,这样我们就把struts加入了项目当中
    3、struts的过滤器会去读取struts的配置文件struts.xml,因此我们要在struts.xml文件中进行配置
     
    使用MyEclipse/Eclipse搭建一个Struts2项目
    一、项目创建
    1、新建项目-这里要注意JAVA版本的选择以及Target runtime的选择
    2、MyEclipse中-右键项目名-MyEclipse-Project Facets-install Apache Struts 2.x Facets
    (Eclipse中这一步应该是把struts需要用的jar包以库的形式导入,或加入到WEB-INF-lib文件夹下)
    这一步是要向项目中导入struts2的jar包,这一步使用MyEclipse的话会非常简单,并且会自动在web.xml文件中注册struts2的过滤器,并且会自动创建struts的struts.xml配置文件
    这里需要注意的另外一点是,myelipse是以库的形式导入的struts2的jar包,在项目中的lib文件夹下并没有相应的jar包,未来如果有项目移植或者发布的情况注意要手动把jar包放到lib文件夹下
     
    二、让我们开始吧
    1、修改web.xml,在<web-app>节点下新增struts2的过滤器(如果使用的是MyEclipse,那么这一步已经自动帮我们完成了)
    [html] view plain copy
     
    1.   <filter-name >struts2 </filter-name >  
    2.   <filter-class>  
    3.        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
    4.      </filter-class>  
    5. </ filter>   
    6. filter-mapping>  
    7.   <filter-name >struts2 </filter-name >  
    8.   <url-pattern >/* </url-pattern >  
    9. </ filter-mapping></span>  
     

    这段代码基本上是固定不变的

     
     
    2、修改src文件夹下的struts.xml(这个文件夹实际上存放在 WEB-INF的classes文件夹)
    
    
    [html] view plain copy
     
    1. <span style="font-size:18px;"><struts>  
    2.      <package name ="welcomePackage" extends="struts-default">  
    3.             <action name ="first">  
    4.                  <result >/first.jsp </result >  
    5.             </action >  
    6.     </package >  
    7. </struts></span>  

    <action>标签里写的是action的名字

    <result>标签里写的是处理过后返回的页面,这里没有写result的name属性,默认为success也就是处理成功返回的页面,关于Action中自带的5中状态,这里不再多讲。

    3、创建相应的JSP页面

    请求页Index.jsp

    在body中加入这个链接<a href="first.action">请求struts</a>

    响应页first.jsp

    这里我们只演示页面成功跳转,因此first页面什么都不写也可以

    4、向Tomcat服务器发布项目

    这里要注意一点 在MyEclipse中Deploy type时选择Packaged Archive(production mode)这样做,系统会把库中所依赖的jar包复制到WEB-INF的lib文件夹下,这样在tomcat服务器启动的时候,系统会从lib中读取到依赖的jar包

    至此,我们的项目就可以运行了。打开Index.jsp页面点击链接,我们可以看到页面地址栏中显示的是first.action,而页面正常跳转到了first.jsp。

    这样我们就搭建了一个最简单的Struts项目

    第二个Struts程序——一个带有动态Action的Struts程序

    通过动态Action程序的学习,就可以掌握普通Action的方式,因此在这里讲述一个动态Action的Struts程序。

    普通的Action对象都是通过重写execute()方法处理浏览器请求。
    动态Action处理方式通过请求Action对象中一个具体的方法来实现动态操作,操作方式是通过在请求Action的URL地址后加上请求字符串(方法名)与Action对象中的方法匹配,注意Action地址与请求字符串之间以!分隔
         eg:userAction!add

    开始:

    1、新建项目,添加struts 特性/jar包,在web.xml中注册struts 2过滤器。具体操作前面已经介绍,这里不再赘述

    2、创建Action,分别在其中编写相应的方法

    [java] view plain copy
     
    1. <span style="font-size:18px;">import com.opensymphony.xwork2.ActionSupport;  
    2.   
    3. public class UserAction extends ActionSupport {    //注意这里要继承ActionSupport类  
    4.      private String info;  
    5.        
    6.      public String getInfo() {  
    7.             return info;  
    8.      }  
    9.      public void setInfo(String info) {  
    10.             this. info = info;  
    11.      }  
    12.   
    13.      public String add () throws Exception {  
    14.            setInfo( "添加用户信息" );  
    15.             return "add";    //返回到struts.xml中,struts根据返回的字符串选择要跳转的result页面  
    16.      }  
    17.      public String update() throws Exception {  
    18.            setInfo( "修改用户信息" );  
    19.             return "update";  
    20.      }  
    21. }</span>  


    3、配置Struts.xml,加入我们需要的action以及相应的返回页面

    [html] view plain copy
     
    1. <span style="font-size:18px;"><struts>  
    2.      <package name ="user" extends="struts-default">  
    3.             <action name ="userAction" class= "com.dukew.UserAction">  
    4.                  <result name ="add">user_add.jsp</ result>      <!-- 在这里设置不同返回值要跳转到的页面 -->  
    5.                  <result name ="update">user_update.jsp</ result>  
    6.             </action >  
    7.      </package >  
    8. </struts></span>  



    4、在请求提交页面中添加下面两个链接
    <a href ="userAction!add"> 添加用户</a >
    <a href ="userAction!update"> 修改用户</a >
         注意href中地址的写法
         点击链接,程序会直接跳入到userAction相应的方法当中。不同的方法返回不同的值,struts.xml根据返回的不同的值跳转到相应的JSP页面
         在响应页面中可以使用struts标签<s:property value="info"/>获取到Action中的属性值,但这里要注意一点,必须在页面头加入struts标签库的引用<%@taglib uri="/struts-tags"prefix="s"%>

    这样我们就完成了一个简单的具有动态Action Struts程序

    第三个Struts程序——制作一个简单的用户注册表单

    认真的完成了前两个程序加上之前学习的Struts2的理论基础(如果对Struts理论性知识还有不明白的可以参考作者之前的笔记

    【JavaWeb】【笔记】《JavaWeb入门经典》 第15章 Struts框架

    决定自己动手来制作一个简单却很常用的用户注册表单

    开始:

    1. 新建项目
    2. 加入struts特性/jar包
    3. 在web.xml中注册struts2过滤器
    4. 创建jsp页面
      index.jsp
      [html] view plain copy
       
      1. <span style="font-size:18px;">  <body>  
      2.     <h1>用户注册</h1>  
      3.     <fieldset>  
      4.     <legend>注册信息</legend>  
      5.     <form action="userRegister">  
      6.         <ul style="list-style-type: none;">  
      7.         <li>用户名:<input type="text" name="name">  
      8.         <li>密  码:   <input type="password"  name="password">  
      9.         <li>性  别:  
      10.                 男<input type="radio" name="sex" id="male" value="male">  
      11.                 女<input type="radio" name="sex" id="female" value="female">  
      12.         <li>提交信息是否正确:     
      13.                 正确<input type="radio" name="validate" id="validate_true" value="true">  
      14.                 错误<input type="radio" name="validate" id="validate_false" value="false">  
      15.         <li>  <input type="submit" value="注册">  
      16.         </ul>  
      17.     </form>  
      18.     </fieldset>  
      19.   </body></span>  


      这里我们添加了一个单选钮,让我们可以模拟页面中出现错误的情况
    5. 创建Action
      [java] view plain copy
       
      1. <span style="font-size:18px;">import com.opensymphony.xwork2.ActionSupport;  
      2.   
      3. public class UserRegister extends ActionSupport {  
      4.   
      5.     private static final long serialVersionUID = 1L;  
      6.   
      7.     private String name;  
      8.     private String password;  
      9.     private String sex;  
      10.     private boolean validate;  
      11.     public String getName() {  
      12.         return name;  
      13.     }  
      14.     public void setName(String name) {  
      15.         this.name = name;  
      16.     }  
      17.     public String getPassword() {  
      18.         return password;  
      19.     }  
      20.     public void setPassword(String password) {  
      21.         this.password = password;  
      22.     }  
      23.     public String getSex() {  
      24.         return sex;  
      25.     }  
      26.     public void setSex(String sex) {  
      27.         this.sex = sex;  
      28.     }  
      29.     public boolean isValidate() {  
      30.         return validate;  
      31.     }  
      32.     public void setValidate(boolean validate) {  
      33.         this.validate = validate;  
      34.     }  
      35.       
      36.     @Override  
      37.     public String execute() throws Exception{  
      38.         if(validate==true){  
      39.             return SUCCESS;  
      40.         } else {  
      41.             return ERROR;  
      42.         }  
      43.     }  
      44.   
      45. }</span>  


      注意action中的属性名要和jsp页面中表单的 name 属性保持一致(这样就可以完成属性值的自动装配)
    6. 编写struts.xml配置文件
      [html] view plain copy
       
      1. <span style="font-size:18px;"><struts>  
      2.     <package name="myPackage" extends="struts-default">  
      3.         <action name="userRegister" class="com.dukew.UserRegister">  
      4.             <result name="success">success.jsp</result>  
      5.             <result name="error">error.jsp</result>  
      6.         </action>  
      7.     </package>  
      8. </struts>  </span>  
      注意action name属性要和jsp页面form提交的action保持一致
      根据不同的result返回相应的页面,注意这里的result要和Action中return的值相同,如果Action中返回的是5个常量状态,result的name属性应写成小写。
    7. 编写result返回的JSP页面
      这个页面可以使用strust的s:property标签获取到Action中的属性
      success.jsp
      [html] view plain copy
       
      1. <span style="font-size:18px;">  <body>  
      2.   <ul style="list-style-type: none;">  
      3.   <li>欢迎:<s:property value="name"/>!</li>  
      4.   <li>您现在的密码是:<s:property value="password"/></li>  
      5.   <li>您的性别是:<s:property value="sex"/></li>  
      6.   </ul></span>  


      error.jsp
      页面内容不重要,这里不再贴出
             这样,我们就完成了我们自己创建的一个小程序,一个简单的用户注册表单。根据注册页面中是否出错的选择,我们可以跳转到不同结果的页面。
    第三个程序的流程是作者做项目时候的流程,和之前书中的例子的流程不大相同。但我个人认为这样的流程清晰易懂,不易出错,完全属于个人喜好。大家可以根据自己的情况来选择合适的工作流程。
     
    总结:经过三个小项目,基本上可以熟练的搭建起一个基本的struts程序了。strust中包含的内容还有很多,比较重要的拦截器这里并没有讲到,因为作者对这部分的知识还存在一些疑惑,需要再做研究。
    再总结一次struts项目的搭建流程:
    1、创建项目
    2、加入jar包
    3、修改web.xml
    4、修改struts.xml
    5、编写Action
    6、编写JSP页面
     
    最后想说:动手是最快速的学习方式,发现错误并解决是最好的成长方式。希望各位初学者们都能够放下理论,动手去做,发现问题。
     
    祝大家能学有所成,工作顺利!
  • 相关阅读:
    linux三剑客之sed
    线程与循环的区别?
    Notify和NotifyAll的区别?
    no system images installed for this target这个问题如何解决?
    Intent里ACTION的CALL和DIAL的区别?
    onConfigurationChanged方法的使用
    String和StringBuffer的区别?
    Activity的状态保存
    C#将datatable数据转换成JSON数据的方法
    SQL语句:关于复制表结构和内容到另一张表中的SQL语句
  • 原文地址:https://www.cnblogs.com/pegasus827/p/9182741.html
Copyright © 2020-2023  润新知