`
gao_20022002
  • 浏览: 160514 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

简单示例搭建框架之一

    博客分类:
  • Java
阅读更多

一直自己搭建框架的意愿,跟着别人的模式走,对于真正体会开发显得不足。

 

经验有限,望高手指点。(好久都没有进行web开发,有点手生,呵呵,努力。)

 

第一步:首先下载需要的开发包。

1、ext开发包(ext-2.2.zip)。

下载地址:http://extjs.com/

2、struts开发包(struts-2.0.14-all.zip)。

下载地址:http://struts.apache.org/

3、spring开发包(spring-framework-2.5.6-with-dependencies.zip)

下载地址:http://www.springsource.org/

4、Hibernate开发包(hibernate-distribution-3.3.1.GA-dist.zip),对于它,还有相关包,可以根据需要选择。

下载地址:http://www.hibernate.org/

对于spring的网站,很奇怪,现在变成springsource.com,尝试了好多次才打开,不知道有什么限制。

另外环境搭建:eclipse3.3+tomcat6.0+mySql5.0。

 

第二步:建立工程。

这个不用多说。

首先在这里想问一个问题:在建立工程中有没有工程编码的设置?

这个在以后开发中遇到很多问题,如果有的话,尽量设置为UTF-8,而不是默认的那个ISO-8859-1,如果你的工程出现中文资源传问题,你就会发现这个的必要,当然这只是一点。

 

第三步:设置数据库编码。

在建立数据库是设置默认编码为UTF-8,假如不这样,在字段中出现中文时,会出错,开始是莫名其妙。首次使用mySQL还不是很熟悉,尽力学习吧。

 

OK,开始工程框架之旅。

最基本的东西就是配置(web.xml\struts.xml\spring.xml),还有就是引入包的问题。

 

先说引入包。

对于上struts:

struts2-core-2.0.14.jar:

核心包,必须。

ognl-2.6.11.jar: 

OGNL的全称是Object Graph Navigation Language(对象图导航语言)。

xwork-2.0.7.jar:

与webwork相关,具体细节不是很清楚。

struts2-spring-plugin-2.0.14.jar:

与spring结合插件,可以不使用。


对于spring:

spring.jar:

核心包,必须。

 

对于hibernate:

hibernate3.jar:

核心包,必须。

antlr-2.7.6.jar:

ANother Tool for Language Recognition(antlr)。

commons-collections-3.1.jar:

集合类。

dom4j-1.6.1.jar:

XML配置和映射解释器。

javassist-3.4.GA.jar:

Javassist 字节码解释器。

jta-1.1.jar:

jta规范,当Hibernate使用jta的时候需要。

slf4j-api-1.5.2.jar以及slf4j-log4j12-1.5.0.jar:

新的日志记录模式,可替代log4j。

 

另外对于common的选择,则自己选择。

 

对于mySQL的连接,采用jtds,包括:

commons-pool-1.3.jar:

一个用于在Java程序中实现对象池化的组件。

jtds-1.2.2.jar:

JTDS JDBC Driver。

mysql-connector-java-5.0.3-bin.jar:

mysql驱动。

 

对于其余的jar,可以根据需要进行增加。

以尽量少用为原则,在这一点上,发现Hibernate做的比较好,在他的目录下明显放置required、optional、bytecode显而易见,可以自由选择,当然要了解具体你要做的事务。

好了,反正开发的原则是开始尽可能少加入jar包,然后根据需要逐步增加,在配置完基本的xml后,启动工程,看看提示的错误,在进行jar包的引入。

说句实话,对于这种框架组合最烦的就是jar包版本问题。

 

下面来看主要的配置文件,一般这个配置成功了,开发就变的简单了。

看web.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
		<!-- 
				<init-param>
				<param-name>config</param-name>
				<param-value>
				struts-default.xml,struts-plugin.xml,struts.xml,../config/struts/*.xml
				</param-value>
				</init-param>
			-->
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/log4j.properties</param-value>
	</context-param>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/config/spring/*.xml</param-value>
	</context-param>

	<listener>
		<listener-class>
			org.springframework.web.util.Log4jConfigListener
		</listener-class>
	</listener>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app> 

看struts配置文件:

<?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>
	<constant name="struts.locale" value="zh_CN" />
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<constant name="struts.i18n.reload" value="true" />
	<constant name="struts.custom.i18n.resources" value="messages" />
	<constant name="struts.action.extension" value="do" />
	<constant name="struts.configuration.xml.reload" value="true" />
	<constant name="struts.enable.DynamicMethodInvocation"
		value="false" />

	<include file="struts_admin.xml" />
</struts>

 而对于实际处理的action,则采用分离xml配置。

 这里是上边配置的struts_admin.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="admin" namespace="/admin" extends="struts-default">
		<action name="login" class="userAction" method="login">
			<result name="input">
				/com/ebook/web/pages/failure.jsp
			</result>
			<result name="success">
				/com/ebook/web/pages/user/list.jsp
			</result>
		</action>

		<action name="list" class="userAction" method="list">
			<result name="input">
				/com/ebook/web/pages/failure.jsp
			</result>
			<result name="success">
				/com/ebook/web/pages/user/json.jsp
			</result>
		</action>		
	
		<action name="layout" class="userAction" method="layout">	
			<result name="input">
				/com/ebook/web/pages/failure.jsp
			</result>
			<result name="success">
				/com/ebook/web/pages/user/layout.jsp
			</result>
		</action>
		<action name="json" class="userAction" method="json">
		</action>
		<action name="ajax" class="userAction" method="ajax">	
		</action>
	</package>
</struts> 

看spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location"
			value="WEB-INF/config/database/database.properties" />
	</bean>

	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="${database.driver}"></property>
		<property name="url" value="${database.url}"></property>
		<property name="username" value="${database.user}"></property>
		<property name="password" value="${database.password}"></property>
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.SQLServerDialect
				</prop>
				<prop key="hibernate.cache.use_query_cache">false</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/ebook/user/model/xml/User.hbm.xml</value>
			</list>
		</property>
	</bean>

	<bean id="userDao" class="com.ebook.user.dao.impl.UserDaoImpl">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="userServer"
		class="com.ebook.user.server.impl.UserServerImpl">
		<property name="dao">
			<ref bean="userDao" />
		</property>
	</bean>
	<bean name="userAction" class="com.ebook.user.action.UserAction">
		<property name="server">
			<ref bean="userServer" />
		</property>
	</bean>
</beans>

在配置中注意头部文件。

至于具体的实现业务,则分别放置于action、server、dao中。

action支持的struts的跳转,即视图数据获取、展示以及控制跳转。

server支持的spring,进行事务处理,支持业务逻辑。

dao支持Hibernate,进行数据库操作,即所谓的持久层。

另外,增加model,及数据模型,将数据对象转换为java对象,Hibernate支持。

附带一个配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.ebook.user.model">
	<class name="User" table="t_user">
		<id name="id" type="java.lang.String" column="USERID"></id>
		<property name="name" type="java.lang.String">
			<column name="USERNAME" />
		</property>
		<property name="pwd" type="java.lang.String">
			<column name="PWD" />
		</property>
		<property name="departid" type="java.lang.String">
			<column name="DEPARTID" />
		</property>
		<property name="email" type="java.lang.String">
			<column name="EMAIL" />
		</property>
		<property name="state" type="java.lang.String">
			<column name="STATE" />
		</property>
	</class>
</hibernate-mapping>

至于具体业务模块是否在此细分问题,看情况决定。

 

java代码的写作风格,看自己情况了。

 

组织结构就上面所述。

 

前页面处理采用ext,由于没有经验,学习中。

 

现在的感觉,用上了ext,struts骄傲的标签完全没有用,对于国际化支持问题,ext不知道怎么体现。

 

struts骄傲的标签,没用上。Form数据收集整理还没来得及想详看。对ActionSupport进行研究。

spring骄傲的事务管理,简单业务也是用不上。至于IOC,必不可少。

Hibernate骄傲的那么多技术,不知道能用到多少。对HibernateDaoSupport进行研究。

 

深入吧,研究中……

 

慢工出细活。

 

说句闲话:思路很重要,思想更重要。原理很重要,实现是其次。

 

 

 

 

评论

相关推荐

Global site tag (gtag.js) - Google Analytics