¡Aprender JAVA y luego aprender SSH será lo más útil para futuros empleos! ¿Cómo debería aprender en el futuro? ¡Pide consejo a los expertos!
El marco Struts tiene las ventajas de la modularidad, flexibilidad y reutilización de los componentes, y también simplifica el desarrollo de aplicaciones web basadas en MVC.
Ventajas:
Struts, al igual que Tomcat, Turbine y muchos otros proyectos de Apache, es software de código abierto, lo cual es una de sus principales ventajas. Por lo tanto, los desarrolladores pueden obtener una comprensión más profunda de sus mecanismos de implementación internos.
Además, las ventajas de Struts se concentran principalmente en dos aspectos: Taglib y navegación de páginas. Taglib es la biblioteca de etiquetas de Struts. Su uso es flexible y puede mejorar enormemente la eficiencia del desarrollo. Además, los desarrolladores JSP nacionales actualmente rara vez desarrollan sus propias etiquetas, excepto para usar las etiquetas JSP comunes que vienen con ellas. Quizás Struts sea un buen punto de entrada.
En cuanto a la navegación de la página, creo que esta será una dirección de desarrollo en el futuro. De hecho, esto puede hacer que el sistema sea más claro. Las conexiones entre varias partes del sistema se pueden obtener desde un archivo de configuración, lo que resulta de gran beneficio para los trabajos de mantenimiento. Esto es especialmente cierto cuando otro grupo de desarrolladores se hace cargo del proyecto.
Además, struts es el "estándar" en la industria (hay muchos casos exitosos), hay abundantes recursos de aprendizaje y el marcado HTML es muy bueno
Desventajas:
Taglib es una de las ventajas de Struts, pero para los principiantes, requiere un proceso de aprendizaje continuo e incluso puede alterar sus hábitos de escritura de páginas web. Sin embargo, cuando se acostumbre, lo encontrará realmente bueno.
Struts divide el Controlador en tres MVC, lo que no sólo obtiene una estructura más clara, sino que también aumenta la complejidad del sistema.
ActionForms es incómodo de usar y no se puede usar para pruebas unitarias (StrutsTestCase solo se puede usar para integración)
Documentación técnica IT168
Struts es lo mismo que Muchos proyectos de Apache, como Tomcat y Turbine, son todos software de código abierto, lo cual es una de sus principales ventajas. De esta manera, los desarrolladores pueden obtener una visión más profunda de su implementación interna. El marco de código abierto Struts se creó para facilitar a los desarrolladores la creación de aplicaciones web basadas en tecnologías Java Servlet y JavaServer Pages (JSP). El marco Struts proporciona un marco estándar unificado para desarrolladores de código abierto. Basado en Struts, los desarrolladores pueden centrarse más en
En términos de aplicaciones, el marco Struts proporciona un marco estándar unificado para desarrolladores de código abierto, lo que les permite. centrarse más en la aplicación de la lógica empresarial. El marco Struts en sí es un controlador de vista de modelo (MVC) implementado utilizando tecnologías Java Servlet y JavaServer Pages.
Específicamente, las ventajas de Struts son:
1. Implementa el modelo MVC y tiene una estructura clara, lo que permite a los desarrolladores centrarse únicamente en la implementación de la lógica empresarial.
2. Hay una gran cantidad de etiquetas que se pueden usar y la biblioteca de etiquetas Struts (Taglib) se puede usar de manera flexible, lo que puede mejorar en gran medida la eficiencia del desarrollo. Además, actualmente los desarrolladores de JSP nacionales rara vez desarrollan sus propias etiquetas, excepto las etiquetas comunes que vienen con JSP. Quizás Struts sea un buen punto de entrada.
3. Navegación de páginas. La navegación de páginas será una dirección de desarrollo futuro que, de hecho, puede hacer que el sistema sea más claro. Tener un único archivo de configuración que registre las conexiones entre varias partes del sistema es un gran beneficio para los trabajos de mantenimiento
Esto es especialmente importante cuando otro equipo de desarrolladores se hace cargo del proyecto.
4. Proporcionar un mecanismo de manejo de excepciones.
5. Gestión del grupo de conexiones de bases de datos
6. Soporte I18N
Desventajas:
En primer lugar, al cambiar a la capa de visualización , necesita Configurar el movimiento hacia adelante. Cada vez que vaya a la capa de visualización, creo que la mayoría de las veces irá directamente a jsp. Cuando se trata de dirección, debe configurar el movimiento hacia adelante. , necesita configurar diez struts
y, a veces, no incluye la modificación de directorios y archivos, el reenvío debe modificarse nuevamente. Tenga en cuenta que cada vez que se modifica la configuración, se requiere todo el proyecto. debe volver a implementarse y un servidor como Tomcate debe reiniciarse si el negocio
p>En un sistema complejo y que cambia con frecuencia, una operación tan simple es inimaginable. La situación actual es que decenas o cientos de personas utilizan nuestro sistema en línea al mismo tiempo. Puedes imaginar lo problemático que es para mí.
En segundo lugar, Struts Action debe ser seguro para subprocesos, lo que solo permite que una instancia maneje todas las solicitudes. Por lo tanto, todos los recursos utilizados por la acción deben estar sincronizados, lo que crea problemas de seguridad de subprocesos.
En tercer lugar, las pruebas son inconvenientes. Cada acción de Struts está acoplada con la capa web, por lo que sus pruebas dependen del contenedor web y las pruebas unitarias son difíciles de implementar. Sin embargo, existe una herramienta de extensión Junit, Struts TestCase, que puede implementar sus pruebas unitarias.
Cuarto, conversión de tipos. Todos los datos de Struts FormBean son de tipo String, que se pueden convertir utilizando la herramienta Commons-Beanutils. Pero se convierte a nivel de clase y la conversión de tipos no es configurable. Además, es difícil devolver información de error al usuario durante la conversión de tipos.
En quinto lugar, demasiada dependencia de los servlets. Struts debe confiar en ServletRequest y ServletResponse al procesar la Acción, por lo que no puede deshacerse del contenedor de Servlet.
6. Lenguaje de expresión front-end. Struts integra JSTL, por lo que utiliza principalmente el lenguaje de expresión JSTL para obtener datos. Sin embargo, el lenguaje de expresión JSTL es débil a la hora de manejar colecciones y propiedades indexadas.
VII. Es difícil controlar la ejecución de la Acción. Después de que Struts crea una Acción, será muy difícil controlar su orden de ejecución. Es posible que incluso tenga que reescribir el Servlet para cumplir con sus requisitos funcionales.
VIII.Implementar el procesamiento antes y después de la Acción. El procesamiento de Action por parte de Struts se basa en la jerarquía de clases, por lo que es difícil operar el procesamiento de Action antes y después.
9. Soporte insuficiente para eventos. En struts, un formulario en realidad corresponde a una clase de Acción (o DispatchAction). En otras palabras: en struts, un formulario en realidad corresponde a un solo evento. Este tipo de cosas en struts
Los métodos se denominan eventos de aplicación. y los eventos de aplicación son eventos de aplicación en comparación con eventos de componentes.
El método Struts se denomina eventos de aplicación. Los eventos de aplicación son eventos generales en comparación con los eventos de componentes.
ActionForm, un objeto de formulario importante de Struts, es un objeto que representa una aplicación. Este objeto contiene al menos varios campos, todos los cuales son campos de entrada del formulario de la página Jsp. , entonces
Entonces, cuando necesitamos refinar la granularidad de los eventos a estos campos en el formulario, es decir, cuando un campo corresponde a un evento.
Por lo tanto, cuando necesitamos refinar la granularidad de eventos de estos campos en el formulario, es decir, cuando un campo corresponde a un evento, es poco probable que se pueda lograr usando Struts solo, pero por supuesto se puede lograr combinando JavaScript viene a salvar el día.
2. Hibernate
Hibernate es un marco de mapeo relacional de objetos de código abierto que encapsula objetos JDBC de una manera muy liviana, por lo que los programadores de Java pueden usar las ideas de programación de objetos tanto como quieran. como para operar la base de datos.
Hibernate se puede utilizar en cualquier situación en la que se utilice JDBC. Se puede utilizar en programas cliente Java o en aplicaciones web Servlet/JSP. Lo más revolucionario es que Hibernate se puede utilizar en aplicaciones EJB. Lo más revolucionario es que Hibernate puede reemplazar CMP
en la arquitectura J2EE usando EJB para completar la tarea de persistencia de datos.
La mayoría de las organizaciones de desarrollo suelen adoptar el enfoque de crear una capa de persistencia de datos separada. Una vez que cambia la estructura de datos subyacente, puede resultar muy costoso adaptar el resto de la aplicación para adaptarse a ese cambio.
hibernate llena este vacío proporcionando un marco de mapeo relacional de objetos eficiente y fácil de usar para aplicaciones Java.
Ventajas:
a.Hibernate utiliza el mecanismo de reflexión de Java en lugar de la mejora del código de bytes para lograr transparencia.
b.El rendimiento de Hibernate es muy bueno porque es un framework liviano. La flexibilidad del mapeo es excepcional.
c. Admite varias bases de datos relacionales, que van desde relaciones complejas de uno a uno hasta de muchos a muchos.
Desventaja: Limita el modelo de objetos que puedes utilizar. (Por ejemplo, una clase de persistencia no se puede asignar a más de una tabla). Su interfaz patentada y su baja cuota de mercado también son preocupantes, pero Hibernate mitiga estos riesgos con su fuerte impulso
Si bien existen otros marcos de persistencia de código abierto, ninguno de ellos tiene el impacto en el mercado que tiene Hibernate.
La respuesta anterior es un poco emotiva. Espero que todos entiendan que no estoy descontento porque alguien haya criticado a Hibernate, sino porque las opiniones en la publicación realmente me hacen sentir ridículo. Independientemente de si creo que Hibernate es bueno o malo, lo único que siento
Desafortunadamente es que no puedo encontrar un comentario de alto nivel sobre Hibernate en el foro chino. Hay un tema candente sobre Hibernate en TSS. Hay cientos de publicaciones, incluido Gavin, el autor de Hibernate, y LiDO JDO, JDO e Hibernate, que han tenido debates acalorados. Pacientemente, busqué una y otra vez, pero todavía no encontré nada adecuado para Hibernate. Miré nuevamente con paciencia y todavía no encontré nada adecuado para Hibernate. Miré nuevamente con paciencia y todavía no encontré nada adecuado para Hibernate. Miré nuevamente con paciencia y todavía no encontré nada adecuado para Hibernate. Lo leí nuevamente con paciencia, pero todavía no pude encontrar un ataque realmente poderoso contra Hibernate. Esos llamados ataques son solo contra Hibernate y no tienen configuración GUI.
Para las herramientas, no hay soporte de empresas comerciales, no hay estandarización, etc. Espere estas razones endebles.
Agregue algunos puntos de mi opinión:
Primero, Hibernate es una encapsulación de objetos ligera de JDBC. Es un marco de capa de persistencia de objetos independiente, que está estrechamente relacionado con App Server y EJB. . No hay conexión necesaria.
Hibernate se puede utilizar en cualquier JDBC y se puede utilizar en cualquier situación, como el código de acceso a la base de datos de aplicaciones Java
, las clases de implementación de la interfaz DAO e incluso el código para acceder a la base de datos en BMP. En este sentido, Hibernate y EB no son lo mismo, ni tienen una relación de uno u otro.
En segundo lugar, Hibernate es un framework estrechamente relacionado con JDBC, por lo que la compatibilidad de Hibernate y los controladores JDBC tiene cierta relación con la base de datos, pero no tiene nada que ver con el uso de programas Java y App Server. son
problemas de compatibilidad.
3. Hibernate no se puede utilizar para comparar directamente con Entity Bean, solo se puede comparar dentro del marco de todo el proyecto J2EE. E incluso si lo miras en el marco general del software, Hibernate se hace como un sustituto de JDBC, pero no como un sustituto de Entity Bean. Permítanme enumerarlo nuevamente. Ya lo enumeré. n veces:
Arquitectura tradicional:
1) Session Bean lt; -gt Entity Bean lt -gt;
Resuelve arquitecturas alternativas para obstáculos. :
2) Session Bean lt;-gt; DAO lt;-gt; JDBC lt;-gt; DB
Utilice Hibernate para mejorar la eficiencia del desarrollo de la arquitectura anterior. Arquitectura:
3) Session Bean lt;-gt; DAO lt;-gt; Hibernate lt;-gt; DB
Análisis de las tres arquitecturas anteriores:
p >1. Consumo de memoria: La Arquitectura 2 que usa JDBC es sin duda la más eficiente en memoria, seguida por la Arquitectura 3 que usa Hibernate y la Arquitectura 1 que usa EB es la peor.
1. Consumo de memoria: la arquitectura JDBC 2 es sin duda la que ahorra más memoria, la arquitectura Hibernate 3 es la segunda y la arquitectura EB 1 es la peor.
2. Eficiencia operativa: si el código JDBC está muy optimizado, entonces la eficiencia de la arquitectura JDBC será la más alta. Sin embargo, en proyectos reales, esto es casi imposible de lograr, lo que requiere que los programadores lo hagan. tenga mucho cuidado en JDBC, utilice declaraciones por lotes, ajuste el tamaño del lote y el tamaño de recuperación y los parámetros de recuperación de PreapredStatement y utilice el almacenamiento en caché del conjunto de resultados cuando sea necesario. En circunstancias normales, los programadores no pueden hacer esto. Por lo tanto, la arquitectura Hibernate muestra la eficiencia de rendimiento más rápida. La eficiencia de la arquitectura EB no estará ni cerca de eso.
3. Eficiencia de desarrollo: entre los proyectos que admiten JBuilder y proyectos simples, la arquitectura EB tiene la mayor eficiencia de desarrollo, seguida de JDBC e Hibernate la peor. Pero en proyectos grandes, especialmente cuando la relación de mapeo entre capas de persistencia es muy compleja, la tasa de eficiencia de Hibernate es sorprendentemente alta, seguida por JDBC, y es probable que la arquitectura EB falle.
4. Distribución, control de seguridad, agrupación en clústeres, soporte de equilibrio de carga
Dado que SB es Facade, no hay diferencia entre las tres arquitecturas.
4. ¿Cuál es la dificultad para aprender EB e Hibernar?
¿Cuáles son las dificultades de la EB? No sólo en archivos de configuración XML complejos, sino que si no tiene cuidado al utilizar EB, se producirán serios obstáculos en el rendimiento.
Entonces, la dificultad es que necesita aprender muchos patrones de diseño de EJB para evitar problemas de rendimiento, y necesita aprender la configuración de App Server y EB para optimizar la eficiencia operativa de EB. Al realizar el trabajo de desarrollo de EB, la mayor parte de la energía de los programadores se invierte en los problemas de rendimiento de EB, en lugar de centrarse más en el diseño de la capa de persistencia del objeto.
¿Qué tiene de difícil Hibernate? No es la complejidad de Hibernate en sí. De hecho, Hibernate es muy simple. La dificultad es que Hibernate es demasiado flexible.
Cuando usa EB para implementar la capa de persistencia, encontrará que EB es demasiado torpe, tan torpe que no tiene otra opción, por lo que no tiene que gastar energía diseñando el programa o equilibrando el programa. Bueno o malo, piensa en qué programa elegir, porque solo hay un programa frente a ti, solo puedes hacer esto, no hay otra opción.
Por el contrario, Hibernate es demasiado flexible. Puedes diseñar al menos una docena de programas para resolver el mismo problema, por lo que es muy difícil ¿deberías utilizar este o aquel? ¿Cuál es la diferencia entre estos planes? ¿Cuáles son las diferencias en sus principios operativos
? ¿Cuál es mejor en términos de eficiencia operativa? Sólo para generar claves primarias, hay siete u ocho opciones para elegir. ¿Le resulta difícil? Para los atributos de colección, puede usar Conjunto, Lista o Bolsa. ¿Cuál es más eficiente? ¿Te da vergüenza?
Puede utilizar un iterador o una lista para realizar consultas. ¿Cuál es mejor? ¿Cuál es la diferencia? Las claves primarias compuestas se pueden configurar directamente en hbm o se puede personalizar CustomerType. ¿Cuál es mejor?
Para una tabla, puede elegir asignar un solo objeto, o asignarlo a un objeto padre-hijo, o puede asignarlo a dos objetos 1:1, en cuyo caso, ¿qué opción es mejor? ? ¿Se metió en problemas?
Esta lista puede seguir y seguir hasta que ya no quieras mirarla. ¿Te sentirás feliz cuando se presenten innumerables escenas deslumbrantes frente a ti? ¿O triste? Si es un programador responsable, estudiará cuidadosamente las diferencias entre cada programa, la eficiencia de cada programa y la aplicación de cada programa, y sentirá que ha caído en él y no puede liberarse. Si está utilizando EB, ya tomó su decisión en el primer segundo y no tiene otra opción. Por ejemplo, al configurar la propiedad Colección, solo puede usar Colección si es Hibernar. vagaba de un lado a otro entre Bolsa, Lista y Conjunto, indeciso, incapaz de hablar con claridad e incapaz de escribir un programa.
3. Spring
Es un proyecto de código abierto y actualmente está muy activo. Construye un sistema j2ee multicapa basado en IoC (Inversión de Control) y Marco AOP, pero no está obligado a utilizar Spring en cada capa porque
es muy modular. Es muy modular, lo que le permite elegir utilizar uno de los módulos según sus propias necesidades. Implementa un MVC muy elegante, proporciona una interfaz unificada para diferentes tecnologías de acceso a datos y puede implementar fácilmente colecciones de beans utilizando IoC;
Y proporcione AOP simple y la correspondiente implementación de gestión de transacciones, etc.
Ventajas
a. Ya sea que elija usar EJB o no, Spring puede organizar de manera efectiva su objeto de capa intermedia. Si solo estás usando Struts u otro marco diseñado para la API J2EE, Spring se encargará del resto.
b. Spring elimina el uso excesivo de Singleton que es común en muchos proyectos.
En mi experiencia, esto es un gran problema y reduce la capacidad de prueba y la orientación a objetos del sistema.
c. Al adoptar un enfoque de archivos de configuración consistente en todas las aplicaciones y proyectos, Spring puede eliminar la necesidad de varios archivos de propiedades de formato personalizado. ¿Alguna vez te has sentido confundido acerca de qué elemento de propiedad mágica o propiedad del sistema requiere una clase y has tenido que leer el Javadoc o incluso el código fuente? Con Spring, basta con mirar las propiedades JavaBean de la clase. El uso de la inversión de control (que se analiza a continuación) ayuda a lograr esta simplificación.
d. Spring promueve buenos hábitos de programación al reducir el costo de la programación en términos de interfaces en lugar de clases a casi cero.
e.Spring está diseñado para que las aplicaciones creadas con Spring dependan lo menos posible de su API.
f. Las aplicaciones creadas con Spring son fáciles de realizar pruebas unitarias.
g.Spring hace que el uso de EJB sea una opción de implementación en lugar de un requisito arquitectónico de la aplicación. Puede optar por utilizar POJO o EJB nativos para implementar la interfaz empresarial sin afectar el código de llamada.
h.Spring puede ayudarte a resolver muchos problemas sin usar EJB. Spring puede proporcionar alternativas a los EJB que son adecuadas para muchas aplicaciones web. Por ejemplo, si sólo necesita trabajar con una única base de datos y ni siquiera necesita una implementación JTA, Spring puede proporcionar gestión de transacciones declarativas utilizando AOP sin pasar por un contenedor EJB.
i. Ya sea que utilice JDBC o un producto de mapeo O/R (como Hibernate), Spring proporciona un marco consistente para el acceso a datos.
Spring realmente te permite resolver problemas con las soluciones más simples posibles. Esto es de gran valor.
Desventajas: no mucha gente lo usa, es necesario escribir mucho código en jsp, el controlador es demasiado flexible y falta un controlador universal