当今程序员做开发几乎都是从半空学起,什么意思呢?
如今做开发的公司都会有自己的框架或者叫平台,无论叫什么吧,归根到底就是架构。
架构师把整个项目可以封装的功能进行封装,从而使程序员在开发的时候少做一些繁琐的工作,
从而达到快速,高校,准确的目的。也就是我们经常说“只需要配置什么什么就可以”。
这里配置就是架构师的目的,你不必再去关系实现的细节,不必再去看繁多的源码,只需要配置一些东西就可以实现效果。
话分两头。。。。。。。
一:架构师
成功的架构师能从整个工程规划,把工程的架构做的健壮,高效,开发简单。(包括对插件等的封装,通常需要js架构师,美工,ui合作完成)。
二:程序员
程序员在此基础上开发变得简单,只需关心业务逻辑。整个开发流程在简单的配置和几段业务代码就ok了。
对一个资深的程序员,基本上不需要架构师的培训就知道怎么使用架构。只要自己跟踪源码,大体浏览一遍源码就知道怎么用了,同时还能
学习到架构师的设计思维。而初级程序员或者说那些刚毕业,刚开始接触开发的人可要小心了,这些架构就像烟雾弹让你开不到
实现的细节,而基础的东西你有没有研究过,久而久之,你只能在这样的架构或者说平台进行开发。越是把架构做大做牛的公司对
初学者越是不利。我见过做了1年多开发的人对struts2的基本原理都不清楚,说白了只知道怎么配置,不知道怎么实现的。
闲话到此,现在开始搭建一个工程,我打算使用ssh。
首先,新建一个web工程,完成后习惯性的我们要建一个源文件夹“config”用于放置配置文件config.properties
在webapp目录下,建一个jsp文件夹用于放置页面。
同时再建立script和resource目录用于放置js和css以及web插件。(jquery是必须有的,这个别忘了)
ssh的jar包我就不说了,网上说的太多了。
其次,ssh的整合我们要关心4个文件:configure.properties,applicationContext.xml,struts.xml和web.xml
先来看看整体的工程结构吧,注意文件的路径:

详细配置文件:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 字符编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- struts2过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- spring监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- session超时设置,单位分钟 -->
<session-config>
<session-timeout>360</session-timeout>
</session-config>
</web-app>
configure.properties
# applicationContext.xml
### C3P0 Connection Pool
c3p0.maxPoolSize=3
c3p0.minPoolSize=1
c3p0.maxIdleTime=1800
c3p0.maxStatements=0
c3p0.acquireIncrement=2
c3p0.idleConnectionTestPeriod=600
#oracle
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.55.15.66:1521:cdbank
jdbc.username=ccdb
jdbc.password=ccdb
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:configure.properties</value>
</list>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.query.substitutions">true=1,false=0</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.cache.region_prefix">direct</prop>
<prop key="hibernate.cache.use_structured_entries">false</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
</props>
</property>
<property name="dataSource" ref="dataSource"/>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/org/first/config/</value>
<value>classpath:/org/second/config/</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
<property name="minPoolSize" value="${c3p0.minPoolSize}"/>
<property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>
<property name="maxStatements" value="${c3p0.maxStatements}"/>
<property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>
<property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"/>
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionProxyTemplate" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="query*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 功能模块的引入 -->
<import resource="classpath:/org/first/config/context_first.xml"/>
<import resource="classpath:/org/second/config/context_second.xml"/>
</beans>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="base-struts-default" extends="struts-default">
<global-results>
<result name="error" type="dispatcher">/jsp/error.jsp</result>
</global-results>
<action name="index" class="org.first.action.FirstIndexAction">
<result name="success">/index.jsp</result>
</action>
</package>
<!-- 开发测试模块 -->
<include file="org/first/config/struts_first.xml"></include>
<include file="org/second/config/struts_second.xml"></include>
</struts>
到目前为止,工程已经搭建完毕,可以正常启动。
那么spring,struts2,hibernate到底能不能正常使用,我们还需做个功能来测试。
并且底层的api需要简单封装以便于开发。这里内容有点多了,我新启一篇,放到下片讲解。
分享到:
相关推荐
SSH架构搭建是一个常见的Java Web开发方式,它包含了Struts、Spring和Hibernate三个主要组件。SSH架构提供了模型-视图-控制器(MVC)的设计模式,使得应用程序的业务逻辑、数据访问和用户界面能够有效地分离,提高了...
SSH架构,全称为Struts2、Spring和Hibernate的集成框架,是Java Web开发中的一个常用技术栈。在本文中,我们将深入探讨如何搭建一个基于SSH的登录实例。 首先,我们需要了解开发环境。在这个实例中,开发者使用的是...
Java架构中的RocketMQ是一款由阿里巴巴开源的分布式消息中间件,广泛应用于大数据实时处理、订单系统、支付系统等场景。本文将详细介绍如何搭建RocketMQ的单机环境,并结合提供的PDF文档和架构师视频资源,深入理解...
总之,这个特定的OpenJDK7 Arm64版本对于那些使用国产化银河麒麟V10系统或其他arm64架构Linux服务器的用户来说,提供了一个可靠的Java运行环境。掌握其安装、配置和管理技巧,对于提升系统运维能力和软件开发效率至...
《深入理解GraalVM:基于graalvm-ce-java11-windows-amd64-21.0.0.2.zip的...通过graalvm-ce-java11-windows-amd64-21.0.0.2.zip这个压缩包,我们可以快速搭建起一个高效的开发和运行环境,体验GraalVM带来的种种优势。
JAVA-ACE-架构师系列视频教程RocketMQ订单实战上目录介绍: 1001_RocketMQ_简介 2002_RocketMQ_核心概念详解 3003_RocketMQ_集群构建模型详解(一) 4004_RocketMQ_集群构建模型详解(二) 5005_RocketMQ_双主模式...
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了...
对于初学者或是专业的Java开发者来说,这是一个非常实用的资源,可以快速搭建起开发环境,开始进行Java编程。在使用时,用户需要先安装jdk-15_windows-x64_bin.exe,设置好环境变量,然后运行Eclipse,即可开始编写...
适用人群: 高级java工程师、java架构师 共23课时共9小时33分钟更新时间:2017-04-05 课程目标 RocketMQ(下)订单实战主要讲解rmq的分布式实战项目,围绕着订单模块等进行讲解,实现补偿等 课程目录 101_rocketmq...
JavaCV(Java Computer Vision)是一个Java接口,它为Java开发者提供了访问各种计算机视觉库的便利,包括OpenCV、FFmpeg等。在Java项目中使用JavaCV可以方便地进行图像处理、视频分析和实时计算机视觉任务。为了搭建...
### JAVA-SSH三层架构搭建学习笔记 #### 一、概述 本学习笔记基于浪曦老师的教学视频进行整理,旨在帮助读者理解如何搭建完整的Struts2 + Hibernate + Spring(简称SSH)三层架构。通过本笔记,读者能够掌握如何从...
本资源主要介绍了搭建XJava架构的Web服务的步骤和相关知识点,涵盖了创建Web工程、引用Jar包、添加Xml配置文件、添加Js类库、添加初始化Listener类、添加Web.xml启动配置、启动验证等方面的内容。 创建Web工程 在...
### 电商微服务架构搭建全过程教程 在当前互联网技术飞速发展的背景下,电商系统作为连接商家与消费者的桥梁,其稳定性、扩展性和性能表现至关重要。为了满足高并发、大数据量处理的需求,越来越多的企业选择采用...
├─2-5微服务项目的搭建-数据库设计与Mybatis逆向工程.mp4 ├─3-10秒杀业务代码实战-死信队列失效超时未支付的订单一.mp4 ├─3-11秒杀业务代码实战-死信队列失效超时未支付的订单二.mp4 ├─3-12秒杀业务代码实战...
项目的源码部分是该压缩包的核心内容,它允许用户查看和学习系统的架构设计、代码编写和软件工程原理。数据库脚本的包含则确保了用户能够了解和操作系统的数据层,对于数据库设计与管理的学习有着直接帮助。软件工具...
私人牙科诊所管理系统的 Java 架构搭建:技术选型与实践要点
虽然无法直接获取“蚂蚁3期java架构”的具体内容,但从上述知识点出发,我们可以设想这样的培训项目可能会覆盖Java架构设计中的最佳实践和最新趋势,例如如何利用Spring Cloud搭建微服务框架、如何通过Kubernetes...
本压缩包文件"SSM基本架构搭建"提供了一个基于Maven构建的基础SSM项目结构,旨在帮助开发者快速地启动一个新的SSM项目。下面将详细阐述SSM框架的组成部分、工作原理以及如何利用这个基础结构进行项目开发。 1. **...
#### 一、Java编程基础 - **Java语言概述**:介绍Java语言的历史、特点及其在软件开发中的应用领域。 - **环境搭建**:指导如何安装JDK(Java Development Kit)、配置环境变量,并使用IDEA或Eclipse等开发工具进行...