當前位置:首頁 » 網頁前端 » ssh框架webxml配置
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

ssh框架webxml配置

發布時間: 2022-12-27 15:46:20

A. SSH框架配置問題

雖然說你已經加了包,但報錯是缺少ContextLoaderListener類。
所以 給你一個官方網站 跟著上面的操作,應該不會出錯。
http://struts.apache.org/2.x/docs/spring-plugin.html

B. JAVA SSH框架搭建流程

首先,明確spring,struts,hibernate在環境中各自的作用。

struts:
用來響應用戶的action,對應到相應的類進行處理。需要struts對應的包。

hibernate:
用來把實體類對應到資料庫。提供增刪改查的基本操作實現。需要hibernate對應的包以及mysql的jdbc驅動包。

spring:
管理struts:在xml配置文件中為struts的action進行值注入。
管理hibernate:在xml配置文件中配置hibernate的配置信息(dataSource,sessionFactory),即不需要原來的hibernate的xml文件。為hibernate的操作注入sessionfactory屬性值。
需要提供spring對應的包,除此以外,還需要提供一個整合spring與struts的包:truts2-spring-plugin-2.0.11.1.jar

下面就搭建步驟進行詳細說明:
1、新建一個web project,導入包,需要的包放在文件夾sshlib中。
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>

<!-- 下面的listener,是spring提供的,它會在創建時自動查找WEB-INF下的applicationContext.xml文件 ,從而創建spring容器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 下面的配置作用是:在MyEclipse中,系統會自動到WEB-INF下尋找 applicationContext.xml文件,而系統
會自動將applicationContext.xml放置到WEB-INF下的classes下,所以會產生找不到applicationContext.xml的錯誤,需要指明applicationContext.xml
的放置位置。這就是下面的信息作用。在Eclipse中也許不需要此配置信息。-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<!-- 下面的配置信息,用來配置說明使用struts過濾器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<!--
下面的配置信息用來說明:程序中運行的action放置在哪個包下面,對於list.action的請求,它會自動在這個包下面尋找ListAction.class的類
如果沒有這句話,那麼所有的action請求只能在struts.xml中進行配置。
-->
<init-param>
<param-name>actionPackages</param-name>
<param-value>
com.action
</param-value>
</init-param>
</filter>
<!--
下面的配置表示對於所有請求都交給struts來處理。
-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

3、接下來用來配置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>
<!-- 指定Web應用的默認編碼集。該屬性對於處理中文請求參數非常有用,對於獲取中文請求參數值,應該將該屬性值設置為GBK或者GB2312 當設置該參數為GBK時,相當於調用HttpServletRequest的setCharacterEncoding方法 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<!-- 定義攔截器 -->
<interceptor name="crudInterceptor"
class="com.action.CrudInterceptor" />
<interceptor-stack name="appStack">
<interceptor-ref name="crudInterceptor" />
<!-- 下面一行自帶的攔截器必須加上,否則出錯 -->
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 使用默認攔截器配置Action都需要攔截器堆棧
即所有struts請求都自動先交給攔截器處理。關於攔截器的具體規則在攔截器對應類(com.action.CrudInterceptor)中進行了解釋。
-->
<default-interceptor-ref name="appStack"></default-interceptor-ref>
</package>
</struts>

4、接下來配置applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans "
xmlns:aop="http://www.springframework.org/schema/aop "
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.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd ">

<!-- 數據源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="org.gjt.mm.mysql.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/user" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
<!-- sessionFactory配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>com/ssh/User.hbm.xml</value>
</list>
</property>
<!-- 定義sessionFactory的屬性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>

<!-- hibernate的類名,屬性名和資料庫之間的對應關系的自定義 com.ynstudio.tools.LocalNamingStrategy -->
<bean id="namingStrategy"
class="org.hibernate.cfg.ImprovedNamingStrategy">
</bean>
<!-- 定義DAO的bean -->
<bean id="userDao"
class="com.ssh.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--
下面的代碼用來向Action類注入屬性值
-->
<bean id="crudAction" class="com.action.CrudAction">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>

5、上述配置文件完成後,就開始業務邏輯部分。
首先完成hibernate的curd操作部分內容。
設計一個User實體類。包含資料庫中User表的欄位。
新建一個User.hbm.xml文件,實現實體類與資料庫的關聯。內容如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd ">
<hibernate-mapping>
<class name="com.ssh.User" table="user">
<id name="id" column="id">
<generator class="increment" />
</id>
<property name="username" column="username" />
<property name="password" column="password" />
<property name="birthday" column="birthday" />
<property name="email" column="email" />
</class>

</hibernate-mapping>
接下來需要實現操作。
設計一個類繼承了HibernateDaoSupport類。關於HibernateDaoSupport類,請參考相關文檔。

6、完成hibernate的設計後,接下來設計struts的攔截器和struts的action。
struts的攔截器:
package com.action;

import java.lang.reflect.Method;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
* 這個類的是攔截器。
* 對於如下URL:
* http://xxxxx:xxxx//xxx/hello.action?method:list
* actionInvocation.invoke()方法會自動調用名稱了HelloAction類的list方法。
* 在action中根據該方法的返回值決定頁面顯示或跳轉位置。
* result值除了可以再action類中定義,還可以在struts.xml中配置。
* 配置時可採用如下語句:
* <action name="hello" class="crudAction">
* <result name="list">/list.jsp</result>
* <result name="modify">/modify.jsp</result>
* </action>
* 此處需要格外注意的是:class屬性的值,此值是applicationContext.xml中的id。
* 該bean中注入了action類中屬性userDao的值。
* 所以,如果需要使用struts.xml中的action配置,需要使用該id,否則,系統不會給其注入值,最終導致空指針異常。
* @author HeXiaoXing
*
*/
public class CrudInterceptor extends AbstractInterceptor{

public String intercept(ActionInvocation actionInvocation) throws Exception {
/*
*下面代碼演示了獲取請求的類名與方法名的一半方式,但本例中不涉及。 全部注釋掉。
*/
// Object action = actionInvocation.getAction();
// Class actionClass = action.getClass();
// String actionClassName = actionClass.getSimpleName();
// String methodName = actionInvocation.getProxy().getMethod();

return actionInvocation.invoke();
}

}

struts的action,關於此action的全部內容,請參考源程序CrudAction。

7、完成了類設計後,就是頁面的設計,關於頁面的設計,不再一一敘述,給粗源文件,請自行參考。
需要提出的是,在轉向時,url的格式必須是method:方法名。這是約定的,不可以寫成method=方法名。

C. ssh部署到weblogic中時web.xml怎麼配置

在web.xml同目錄下創建weblogic.xml
內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<container-descriptor>
//優先載入項目lib中的jar包
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
<context-root>/</context-root>

</weblogic-web-app>

D. java web ssh框架下的applicationContext.xml的配置文件,求解釋

<bean id="systemDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<!--<value>jdbc:mysql://119.188.6.228:3306/xmad?useUnicode=true&characterEncoding=utf-8</value>-->
<value>jdbc:mysql://localhost:3306/xmad?useUnicode=true&characterEncoding=utf-8</value>
</property>
<property name="user">
<value>root</value>
</property>
<property name="password">
<!--<value>x5m2a1d</value>-->
<value>123456</value>
</property>
<!--連接池中保留的最小連接數。 -->
<property name="minPoolSize">
<value>10</value>
</property>
<!--連接池中保留的最大連接數。Default: 15 -->
<property name="maxPoolSize">
<value>50</value>
</property>
<!--初始化時獲取的連接數,取值應在minPoolSize與maxPoolSize之間。Default: 3 -->
<property name="initialPoolSize">
<value>10</value>
</property>
<!--最大空閑時間,60秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->
<property name="maxIdleTime">
<value>300</value>
</property>
<!--當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3 -->
<property name="acquireIncrement">
<value>5</value>
</property>
<!--JDBC的標准參數,用以控制數據源內載入的PreparedStatements數量。但由於預緩存的statements 屬於單個connection而不是整個連接池。所以設置這個參數需要考慮到多方面的因素。
如果maxStatements與maxStatementsPerConnection均為0,則緩存被關閉。Default: 0 -->
<property name="maxStatements">
<value>0</value>
</property>
<!--每60秒檢查所有連接池中的空閑連接。Default: 0 -->
<property name="idleConnectionTestPeriod">
<value>60</value>
</property>
<!--定義在從資料庫獲取新連接失敗後重復嘗試的次數。Default: 30 -->
<property name="acquireRetryAttempts">
<value>3</value>
</property>
<!--獲取連接失敗將會引起所有等待連接池來獲取連接的線程拋出異常。但是數據源仍有效 保留,並在下次調用getConnection()的時候繼續嘗試獲取連接。如果設為true,那麼在嘗試
獲取連接失敗後該數據源將申明已斷開並永久關閉。Default: false -->
<property name="breakAfterAcquireFailure">
<value>true</value>
</property>
<property name="automaticTestTable">
<value>Test</value>
</property>
<!--因性能消耗大請只在需要的時候使用它。如果設為true那麼在每個connection提交的 時候都將校驗其有效性。建議使用idleConnectionTestPeriod或automaticTestTable
等方法來提升連接測試的性能。Default: false -->
<property name="testConnectionOnCheckout">
<value>false</value>
</property>
</bean>

E. 我在用SSH2開發時,在web.xml里配置時

首先要說明一下Open Session in View的作用,就是允許在每次的整個request的過程中使用同一個hibernate session,可以在這個request任
何時期lazy loading數據。
如果是singleSession=false的話,就不會在每次的整個request的過程中使用同一個hibernate session,而是每個數據訪問都會產生各自的seesion,等於沒有Open Session in View.
OpenSessionInViewFilter默認是不會對session 進行flush的,並且flush mode 是 never
代碼:
protected Session getSession(SessionFactory sessionFactory) throws {
Session session = SessionFactoryUtils.getSession(sessionFactory, true);
session.setFlushMode(FlushMode.NEVER);
return session;
}
看getSession的方式就知道,把flush mode 設為FlushMode.NEVER,這樣就算是commit的時候也不會session flush,
如果想在完成request過程中更新數據的話, 那就需要先把flush model設為FlushMode.AUTO,再在更新完數據後flush.
.
OpenSessionInView默認的FlushMode為
代碼:
FlushMode.NEVER

F. java里我用hss框架,誰能和我解釋下web.xml裡面的配置呢filter什麼的啥意思

java里的ssh框架,web.xml主要是struct2框架的配置文件,裡面可以配置filter過濾器,可以做一些請求的攔截,比如防止用戶不從登陸界面進入主界面。還有一些提交的參數校驗

G. 如何搭建SSH框架,myeclipse搭建SSH框架詳解

搭建struts應用
2.1 引入需要的jar包
commons-fileupload-1.2.1.jar 文件上傳
commons-logging-1.0.4.jar 日誌包
freemarker-2.3.13.jar Sturts2的所有UI標記
ognl-2.6.11.jar OGNL表達式相關
struts2-core-2.1.6.jar Struts2的核心包
xwork-2.1.2.jar XWork2 庫。Struts2核心包,做為底層存在
2.2 加入配置文件 struts.xml, struts.properties
2.3 將struts加入到web.xml的配置中,將請求交由struts來處理
2.4 編寫Action類,無需繼承任何類和實現任何介面
2.5 在struts.xml中加入對action的配置
搭建spring的框架
2.1 加入jar包
SPRING_HOME/dist/spring.jar
SPRING_HOME/lib/log4j/log4j.jar
SPRING_HOME/jakarta-commons/commons-logging.jar
2.2 加入配置文件
SPRING_HOME/samples/jpetstore/war/WEB-INF/log4j.properties
SPRING_HOME/samples/jpetstore/war/WEB-INF/applicationContext.xml
2.3 將寫好的類加入到spring的管理(配置到xml中)
2.4 通過來載入spring的配置文件生成BeanFactory工廠對象,通過工廠對象來創建所需要的bean
hibernate框架搭建
1.1 加入jar包
HIBERNATE_HOME/hibernate3.jar -- hibernate核心包
HIBERNATE_HOME/lib/required/*.jar
(在hibernate官網下載的包中卻少一個必須包slf4j-nop-1.5.2.jar,需要自己在網上下載)
資料庫的jar包
1.2 hibernate.cfg.xml配置文件
HIBERNATE_HOME/project/etc/hibernate.cfg.xml
對應屬性在HIBERNATE_HOME/project/etc/hibernate.properties中尋找
hibernate.connection.url --- 訪問資料庫的url地址
hibernate.connection.username --- 訪問資料庫的用戶名
hibernate.connection.password --- 訪問資料庫的密碼
hibernate.connection.driver_calss --- 訪問資料庫所需的驅動包
hibernate.dialect --- 訪問資料庫的方言
1.3 Xxxx.hbm.xml 映射文件
HIBERNATE_HOME/project/tutorials/eg/src/main/java/org/hibernate/auction/Xxxx.hbm.xml
將該文件以需要映射的類的類名.hbm.xml命名放在跟映射類同包中

H. 在ssh框架中web.xml怎麼配置hibernate4

不需要配置hibernate4 只需要配置Struts 和Spring就好啦 hibernate只需要在Spring中配置就行啦

I. IDEA中怎樣配置SSH框架(具體點,最好圖文並茂)

聲明:以下方法集成SSH,絕對簡單易懂,別看字多,但是操作起來非常快,代碼寫得很少,熟練點也就5到10分鍾左右。
1.new一個web項目,new完後,去找myeclipse的數據源,新建一個數據源,寫上數據源名稱,連接資料庫的url,賬戶密碼,並添加連接資料庫的jar包,保存,並且測試一下。2.右擊項目名,找到下面的Myeclipse,滑鼠放上去,會出來一另一個列表,找到add struts Capab,點擊,選擇 struts2.1,選擇/*,點擊next,這時候開始添加jar包,第一個struts core Libra核心包自動點上了,不管,再下去找到一個struts 2 Spring Libra包,鉤上。然後完成。3.然後根據第二步,找到add spring Capab,選擇spring2.5 , 勾選前三個包,然後再去下面找一個 spring2.5 web Libra,鉤選,然後在下面的JAR Library Installation 下面選擇第二個單選按鈕 Copy.....,點next, 再點完成。4.再根據第二部,找到add Hibernate Capab,選擇hibernate3.1,勾選下面第1,和第2個jar包。然後在下面的JAR Library Installation 下面選擇第二個單選按鈕 Copy。。。,點next,依舊是點第二個單選按鈕即spring config..,點next,繼續點第二個單選按鈕即Existing....,點next,這時候進入選擇數據源,找到DB Driver 下拉框,選擇你剛才自己新建的數據源。選擇好後,會自動填充所有的連接資料庫信息。點next,進入創建sessionfacorty,找到第一個文本框,java package,點右邊的new,寫上包名com..hib.util。點擊完成。5.這時候SSH集成已經完成了一大半。第四步點完成後,只要上面的步驟正確完成,這時候在你的工程裡面就會出來一個applicationContext,xml文件,而且絕對是報錯的。放心。接下來點開這個文件,找到報錯的那一行,這里我用簡單的方法教你解決報錯。報錯的一行是class="org.apache.commons.dbcp.BasicDataSource">,把引號裡面的話全部刪掉,在引號裡面寫上driver然後Alt+\感知,找到第6個是以 jdbc.datasource結尾的,點這個。然後自動生成class="org.springframework.jdbc.datasource.DriverManagerDataSource">。這樣就不會報錯了。6.接下來去找到項目的WebRot文件夾下面的WEB-INFI下面的web.xml 文件,自己寫上 <context-param>
<param-name>
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
classpath:applicationContext.xmls
</param-value>
</context-param>
</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>這段話,註:<>尖括弧的都是感知出來的,不用自己手寫,但是contextConfigLocation,和classpath:applicationContext.xml得自己寫。然後在這段話後面加上,<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>這段話,同樣尖括弧的都是感知,這句話org.springframework.web.context.ContextLoaderListener
其實不用自己寫,只要找到spring-web.jar包下面的這個包org.springframework.web.context加上點,再加上下面的ContextLoaderListener.class同時去掉點class即可。如果你找不到,就自己手寫吧。OK.簡單的SSH集成就完成了。
後面還有一些比如實體類的創建,數據訪問層的實現類DaoImpl,以及裡面的方法查詢,資料庫中的一張表的最基本的增刪改和根據實體類中某個欄位的查詢方法都是可以自動生成的,只要改下類名和包名就可以了。這個以後有空再說吧。用我這個方法,不用去查API到裡面拷貝代碼,簡單高效。10分鍾內可以集成完畢。對於一張表而言,本人增刪改查加分頁40分鍾就全部能寫完。
下面我再簡單說一下MVC的設計模式的所有包名類名。
數據訪問層-到業務邏輯層-顯示層這是MVC最基本的。先說數據訪問層,通常以Dao結尾。第一個包叫做com.,下面的類是放數據訪問層介面,比如你的實體類叫User,介面名就叫做UserDao.然後再一個包叫做com,.impl.這個包是放數據訪問層的實現方法。下面的類名就可以叫做UserDaoImpl,這個類實現上面的UserDaoImpl介面。再說業務邏輯層,通常以service命名。也是第一個包叫做com.service,下面放的也是業務邏輯層的介面,UserService.再一個包就叫做com.service.impl,下面放的類名叫做UserServiceImpl,實現UserServiceImpl介面。再說控制層,就是通常Action。建個包名叫做com.web.action。下面就放action類,名字就叫做UserAction。這就是最基本MVC的命名了。不過記得要去struts.xml寫一下action的配置信息。還有不懂的問我就是了。

J. SSH整合後,web.xml配置的問題導致無法讀取頁面一直404

地址錯了
你把 classpath:applicationContext.xml換成/applicationContext.xml
不行的話就把這個xml文件建在 web-inf目錄下
然後 classpath:applicationContext.xml換成/web-inf/applicationContext.xml