一 JSP
以下配置信息都是针对简单的登陆案例进行的,主要包含有JSP三个文件(login.jsp——登陆页面,login_success.jsp——登陆成功页面,login_failure.jsp——登陆失败页面)
Web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<!--配置默认页面,可根据需要修改-->
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
注:该JSP案例还包含一个login_conf.jsp——登陆检查页面,基本上不用配置。
Login.jsp中form为 <form method="get"action="login_conf.jsp">
二 Servlet
Web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>This is the descriptionof my J2EEcomponent</description>
<display-name>This is the displayname of my J2EEcomponent</display-name>
<!--配置Servlet 类名-->
<servlet-name>LoginConf</servlet-name>
<!--Servlet类所在的包名-->
<servlet-class>com.my.servlet.LoginConf</servlet-class>
</servlet>
<servlet-mapping>
<!--跟servlet标签中的servlet-name中的名字必须一样-->
<servlet-name>LoginConf</servlet-name>
<!--url的显示路径,在html页面中的Action中的路径属性值-->
<url-pattern>/LoginConf</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
注:该Servlet案例创建了LoginConf.java类,实现了HttpServlet。
login.jsp页面中的form为 <form method="get"action="LoginConf">
三 Struts 1
Web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-appxmlns="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">
<servlet>
<!--配置Struts1的核心控制器的名称-->
<servlet-name>action</servlet-name>
<!--配置Struts 1的核心控制器的实现类-->
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!--配置Struts 1初始化信息-->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<!--配置ActionServlet接受所有以*.do结尾的请求-->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Struts-config.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""http://struts.apache.org/dtds/struts-config_1_2.dtd">
<!-- Struts配置文件的根元素 -->
<struts-config>
<data-sources/>
<!--配置ActionForm,所有的ActionForm都必须定义在form-beans元素中-->
<form-beans>
<!--通过form-beans元素定义ActionForm,其中name属性指定ActionForm的名称,
type属性指定ActionForm的实现类-->
<form-bean name="loginForm"type="com.my.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards/>
<action-mappings>
<!--通过Action元素定义Action,其中path属性指定url,type属性指定Action的实现类
name属性用来指定对应的ActionForm的名称,scope属性用来指定ActionForm存放的属性范围-->
<action
attribute="loginForm"
name="loginForm"
path="/login"
scope="request"
type="com.my.struts.action.LoginAction">
<!--定义逻辑视图success,对应的jsp页面为”/login_success.jsp“ -->
<forward name="success" path="/login_success.jsp"/>
<!--定义逻辑视图failure,对应的jsp页面为”//login_failure.jsp“-->
<forward name="failure" path="/login_failure.jsp"/>
</action>
</action-mappings>
<message-resourcesparameter="com.yourcompany.struts.ApplicationResources"/>
</struts-config>
注:该Struts 1案例创建了LoginAction.java类,实现了Action;
LoginForm.java,实现了ActionForm;
login.jsp页面中的form为 <form method="get"action="login.do">
四 Struts 2
Web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<!--定义核心Filter的名称 -->
<filter-name>struts2</filter-name>
<!--定义核心Filter的实现类 -->
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<!--核心Filter的名称 -->
<filter-name>struts2</filter-name>
<!--使用该核心Filter来接受所有的web请求 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- Struts配置文件的根元素 -->
<struts>
<!-- Action必须放在指定的报名空间中 -->
<package name="struts2" extends="struts-default">
<!--定义login的Action,其实现的类为com.yourcompany.struts.action.UserloginAction-->
<action name="login"class="com.yourcompany.struts.action.UserloginAction">
<!--定义逻辑视图success,对应的jsp页面为”/login_success.jsp“ -->
<resultname="success">/login_success.jsp</result>
<!--定义逻辑视图failure,对应的jsp页面为”//login_failure.jsp“-->
<resultname="failure">/login_failure.jsp</result>
</action>
</package>
</struts>
注:该Struts 2案例创建了UserloginAction.java类,不用继承其他类
login.jsp页面中的form为 <form method="get"action="login.do">
五Struts2与Hibernate
项目名称:Struts2_Hibernate,该项目通过DAO组件并结合Struts2与hibernate框架从而将Struts与Hibernate以底耦合度方式整合,整个项目分为四个层次:表现层,业务逻辑层,持久层,数据库层。
Web.xml
配置同Struts 2
Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- Struts配置文件的根元素 -->
<struts>
<!-- Action必须放在指定的报名空间中 -->
<package name="struts2" extends="struts-default">
<!--定义showAll的Action,其实现的类为com.zb.action.ShowAllAction-->
<action name="showAll"class="com.zb.action.ShowAllAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<resultname="success">/showAll.jsp</result>
</action>
<!-- 定义add的Action,其实现的类为com.zb.action.AddAction-->
<action name="add"class="com.zb.action.AddAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<result name="success"type="redirect">/showAll.action</result>
</action>
<!--定义delete的Action,其实现的类为com.zb.action.DeleteAction-->
<action name="delete"class="com.zb.action.DeleteAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<result name="success"type="redirect">/showAll.action</result>
</action>
<!--定义update的Action,其实现的类为com.zb.action.UpdateAction-->
<action name="update"class="com.zb.action.UpdateAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<result name="success"type="redirect">/showAll.action</result>
</action>
</package>
</struts>
Hibernate.cfg.xml
<?xml version='1.0'encoding='UTF-8'?>
<!DOCTYPE hibernate-configurationPUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipseHibernateTools. -->
<hibernate-configuration>
<session-factory>
<!-- 数据库用户名 -->
<propertyname="connection.username">root</property>
<!-- 数据库连接URL -->
<property name="connection.url">
jdbc:mysql://localhost:3306/mystruts2
</property>
<!-- 数据库方言 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<propertyname="myeclipse.connection.profile">
localhost
</property>
<!-- 数据库用户密码 -->
<propertyname="connection.password">vertrigo</property>
<!-- 数据库连接驱动 -->
<propertyname="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 映射文件 -->
<mapping resource="com/zb/model/product.hbm.xml"/>
</session-factory>
</hibernate-configuration>
product.hbm.xml
<?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">
<!--
Mapping fileautogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.zb.model.Product" table="product"catalog="mystruts2">
<id name="id" type="string">
<column name="id" length="10" />
<generatorclass="assigned"></generator>
</id>
<property name="name"type="string">
<column name="name" length="10" not-null="true"/>
</property>
<property name="price"type="double">
<column name="price" precision="10" scale="0"not-null="true" />
</property>
</class>
</hibernate-mapping>
六 Struts2与Spring
项目名称:SSHProject,该项目整合Struts 2和Spring框架,从而通过Spring容器来管理Struts2中的Action。该整合充分利用了Spring的IoC特性
Web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<filter>
<!--定义核心Filter的名称 -->
<filter-name>struts2</filter-name>
<!--定义核心Filter的实现类 -->
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<!--核心Filter的名称 -->
<filter-name>struts2</filter-name>
<!--使用该核心Filter来接受所有的web请求 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 它为服务器添加了一个监听器,使 struts2 与 spring 结合起来-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
</web-app>
Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- Struts配置文件的根元素 -->
<struts>
<!-- Action必须放在指定的报名空间中 -->
<package name="struts2" extends="struts-default">
<!-- 定义login的Action,其实现的类为LoginAction这里的LoginAction必须 要与 applicationContext.xml 中的 -->
<action name="login"class="LoginAction">
<!--定义逻辑视图success,对应的jsp页面为”/login_success.jsp“ -->
<result>/login_success.jsp</result>
<!--定义逻辑视图failure,对应的jsp页面为”//login_failure.jsp“-->
<resultname="failure">/login_failure.jsp</result>
<resultname="input">/login.jsp</result>
</action>
</package>
</struts>
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="LoginCheck"class="com.zb.action.LoginCheck"></bean>
<bean id="LoginAction"class="com.zb.action.UserloginAction">
<property name="lc"ref="LoginCheck"></property>
</bean>
</beans>
七 Struts2 、Spring与Hibernate
项目名称:SSH2,该项目通过整合Struts2 、Spring以及Hibernate框架并使用Spring的IoC容器来负责创建和管理组件,大大降低各组件直接之间的耦合度。
Web.xml
同五中的
Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- Struts配置文件的根元素 -->
<struts>
<constantname="struts.il8n.encoding" value="gb2312"></constant>
<!-- Action必须放在指定的报名空间中 -->
<package name="struts2" extends="struts-default">
<!--定义showAll的Action,其实现的类为com.zb.action.ShowAllAction-->
<action name="showAll"class="showAllAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<resultname="success">/showAll.jsp</result>
</action>
<!-- 定义add的Action,其实现的类为com.zb.action.AddAction-->
<action name="add"class="addAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<result name="success"type="redirect">/showAll.action</result>
</action>
<!--定义delete的Action,其实现的类为com.zb.action.DeleteAction-->
<action name="delete"class="deleteAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<result name="success"type="redirect">/showAll.action</result>
</action>
<!--定义update的Action,其实现的类为com.zb.action.UpdateAction-->
<action name="update"class="updateAction">
<!--定义逻辑视图success,对应的jsp页面为”/showAll.jsp“ -->
<result name="success"type="redirect">/showAll.action</result>
</action>
</package>
</struts>
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- 这里是用来配置连接数据库基础信息的,用JDBC链接-->
<!--定义数据源,该bean 的ID为dataSource-->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 指定数据库驱动-->
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 指定连接数据库的URL-->
<property name="url">
<value>
jdbc:mysql://localhost:3306/mystruts2
</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>vertrigo</value>
</property>
</bean>
<!--定义Hibernate的SessionFactory-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 依赖注入数据源,注入正是上文定义的dataSource-->
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<!-- 定义Hibernate的SessionFactory的属性-->
<propertyname="hibernateProperties">
<props>
<!-- 指定Hibernate的连接方言-->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<!-- 不同数据库连接,启动时选择create,update,create-drop-->
<propkey="hibernate.hbm2ddl.auto">update</prop>
<propkey="hibernate.show_sql">true</prop>
</props>
</property>
<!-- mappingResouces属性用来列出全部映射文件-->
<propertyname="mappingResources">
<list>
<!--以下用来列出所有的PO映射文件-->
<value>com/zb/model/product.hbm.xml</value>
</list>
</property>
</bean>
<bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!--配置ProductDAO 持久化类的DAO bean-->
<bean id="ProductDAO"class="com.zb.dao.ProductDAOImpl">
<propertyname="hibernateTemplate">
<!--采用依赖注入来传入SessionFactory的引用-->
<ref bean="hibernateTemplate"/>
</property>
</bean>
<!-- 配置业务逻辑组件 -->
<bean id="ProductService"class="com.zb.service.ProductServiceImpl">
<property name="dao">
<!-- 为业务组件注入DAO组件 -->
<ref bean="ProductDAO"/>
</property>
</bean>
<!-- 创建showAllAction实例 -->
<bean id="showAllAction"class="com.zb.action.ShowAllAction">
<property name="ps" ref="ProductService"></property>
</bean>
<bean id="addAction"class="com.zb.action.AddAction">
<property name="ps" ref="ProductService"></property>
</bean>
<bean id="deleteAction"class="com.zb.action.DeleteAction">
<property name="ps" ref="ProductService"></property>
</bean>
<bean id="updateAction"class="com.zb.action.UpdateAction">
<property name="ps" ref="ProductService"></property>
</bean>
</beans>