Maison Java javaDidacticiel Struts入门经验(二)

Struts入门经验(二)

Dec 17, 2016 am 10:43 AM


  上一篇Struts入门经验,我们主要讲述了如何安装Struts以及注册页面:reguser.jsp,本文将主要介绍Struts应用实例、优缺点和实施经验。 
  
  Struts-config.xml: 
   
  
    type="org.cjea.Struts.example. RegUserForm "/> 
  

  
        type=" org.cjea.Struts.example.RegUserAction "
      attribute=" regUserForm "
      scope="request"
      validate="false">
     
     
  
  

  

  Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。把握Struts-config.xml是把握Struts的要害所在。 
  FormBean:RegUserForm 
  
  package org.cjea.Struts.example;
  
  import javax.Servlet.http.HttpServletRequest;
  import org.apache.Struts.action.ActionForm;
  import org.apache.Struts.action.ActionMapping;
  
  public final class RegUserForm extends ActionForm{
  
   PRivate String logname;
   private String passWord;
   private String email;
  
   public RegUserForm(){
    logname = null;
    password = null;
    email = null;
   }
  
   public String getLogName() {
    return this.logname;
   }
   public void setLogName(String logname) {
    this.logname = logname;
   }
   public void setPassWord(String password) {
    this.password = password;
   }
   public String getPassWord() {
    return this.password;
   }
   public void setEmail(String email) {
    this.email = email;
   }
   public String getEmail() {
    return this.email;
   }
  
   public void reset(ActionMapping mapping, HttpServletRequest request)
    {
      logname = null;
   password = null;
   email = null;
    }
  }
  每一个FormBean 都必须继续ActionForm类,FormBean是对页面请求的封装。即把HTTP request 封装在一个对象中,需要说明的一点就是多个HTTP request可以共用一个FormBean,便于维护和重用。 
  ActionBean:RegUserAction
  
  package org.cjea.Struts.example;
  
  import javax.Servlet.http.*;
  import org.apache.Struts.action.*;
  
  public final class RegUserAction extends Action
  {
  
   public Acti??μ??????;onForward perform(ActionMapping mapping,
   ActionForm form, HttpServletRequest req,
   HttpServletResponse res)
   { 
   String title = req.getParameter("title");
   String password = req.getParameter("password");
   String email = req.getParameter("email");
   /*
   取得用户请求,做相应数据库操作,略
   */ 
   }
  }
  FormBean的产生是为了提供数据给ActionBean,在ActionBean中可以取得FormBean中封装的数据,经相应的逻辑处理后,调用业务方法完成相应业务要求。 
  
  Servlet的演变:在常规的 JSP,Servlet,JavaBean三层结构中,JSP实现View的功能,Servlet实现Controller的功能,JavaBean实现Model的实现。 
  
  在Struts中,将常规情况下的Servlet拆分与ActionServlet、FormBean、ActionBean三个部分。ActionServlet配合Struts-config.xml,专职完成页面导航,而不再负责具体的数据获取与相应逻辑,这两部分功能由FormBean和ActionBean来完成。 
  
  Struts优缺点
  优点: 
  
  Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。 
  
  除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。 
  
  关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清楚。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 
  
  缺点: 
  
  Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。 
  
  Struts将MVC的Controller一分为三,在获得结构更加清楚的同时,也增加了系统的复杂度。 
  
  Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式,假如你的系统预备采用J2EE MVC架构,那么,不妨考虑一下Struts。 
  
  Struts实施经验:
  1、基于Struts架构的项目开发,首先需要有一个很好的整体规划,整个系统中包括哪几个模块,每个模块各需要多少FormBean和ActionBean等,而且最好有专人负责Struts-config.xml的治理。开发基于Struts的项目的难点在于配置治理,尤其是对Struts-config.xml的治理 
  
  2、假如你的项目非常紧,并且项目组中又没有富有经验的Struts开发人员,建议不要冒然采用Struts。Struts的把握需要一个过程,对于一个熟练的JSP程序员,自学大概需要半个月左右的时间。假如结合titls,则需要更长的时间 
  
  3、假如你在网页中大量运用taglib,那么你的美工将做出部分牺牲。当你结合Tiles,功能增强的同时,这种牺牲尤为明显。当然,你对功能和美观的取舍由你自己决定 
  
  4、Taglib是一个好东西,但灵活运用它却需要一个过程,假如你不想在Taglib上花太多的时间,那么只需理解与FORM有关的几个标记,其它的标记就放着吧,以后再看,先去研究ActionServlet和Struts-config.xml,你会觉得很有成就感 
  
  5、Struts是否只适合于大型项目呢?No!Struts适合于各种大小的项目,当然,对于大型项目,它所体现出来的优势更加明显。 

 以上就是Struts入门经验(二)的内容,更多相关文章请关注PHP中文网(www.php.cn)!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Apr 19, 2025 pm 11:42 PM

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Apr 19, 2025 pm 04:51 PM

Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Apr 19, 2025 pm 06:21 PM

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Apr 19, 2025 pm 11:45 PM

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Comment convertir en toute sécurité les objets Java en tableaux? Comment convertir en toute sécurité les objets Java en tableaux? Apr 19, 2025 pm 11:33 PM

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Quelle est la différence entre les fuites de mémoire dans les programmes Java sur les processeurs ARM et architecture x86? Quelle est la différence entre les fuites de mémoire dans les programmes Java sur les processeurs ARM et architecture x86? Apr 19, 2025 pm 11:18 PM

Analyse du phénomène de fuite de mémoire des programmes Java sur différents processeurs d'architecture. Cet article discutera d'un cas où un programme Java présente différents comportements de mémoire sur les processeurs ARM et architecture x86 ...

Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Apr 19, 2025 pm 11:36 PM

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...

Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Apr 19, 2025 pm 01:57 PM

Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Lors du tri des utilisateurs en groupes, il est souvent nécessaire de convertir le nom de l'utilisateur en numéros afin qu'il puisse être différent ...

See all articles