在s2sh中web.xml檔案中的如下語句
<
listener
>
<
listener-class
>org.springframework.web.context.contextloaderlistener
listener-class
>
listener
>
<
context-param
>
<
param-name
>contextconfiglocation
param-name
>
<
param-value
param-value
>
context-param
>
把spring中的
beanfactory
初始化,並且放入了
servletcontext
中,避免
struts2
在每個action
中初始beanfactory
(耗資源)進行資料庫的操作,而
struts2
的action
如何取到該初始化好的
beanfactory
呢,筆者總結了如下三個方法:
方法1:
public
class loginaction extends actionsupport implements servletcontextaware {
....(程式其他**)
private servletcontext servletcontext;
public string execute() {
....(程式其他**)
usermanager usermanager = (usermanager) factory.getbean("usermanager");
....(程式其他**)
return
success;
@override
public
void setservletcontext(servletcontext arg0) {
// todo
auto-generated method stub
servletcontext = arg0;
action實現servletcontextaware 介面,複寫setservletcontext方法,在struts2掉用此
action
方法2:
在action
類不實現servletcontextaware 介面,在execute方法中加入servletcontext servletc = servletactioncontext.getservletcontext();語句就可以,即從servletactioncontext中直接把servletcontext取出來
public
class loginaction extends actionsupport {
....(程式其他**)
public string execute() {
....(程式其他**)
servletcontext servletc = servletactioncontext.getservletcontext();
usermanager usermanager = (usermanager) factory.getbean("usermanager");
....(程式其他**)
return
success;
方法三:
把action
交給spring
的ioc
容器管理,那麼在
action
類中就不會有
beanfactory
生成了
步驟如下:
檔案中加入
action
的bean
<
bean
name="loginaction"
class="action.loginaction"
scope="prototype"
>
<
property
name="usermanager"
ref="usermanager"
/>
bean
>
scope最好設成prototype,避免action的執行緒安全問題
在struts.xml
檔案中,
action
要按如下方式申明:
<
package
name="user"
namespace="/"
extends="struts-default"
>
<
action
name="login"
class="loginaction"
>
<
result
name="success"
>/success.jsp
result
>
<
result
name="input"
>/login.jsp
result
>
<
result
name="error"
>/failed.jsp
result
>
action
>
package
>
<
action
name="login"
class="loginaction"
>中的class要與
bean
中的name
相對應
最後,在action
中的**就是很簡單的
(當然,其中的setusermanager方法別忘了)
import manager.usermanager;
import bean.user;
import com.opensymphony.xwork2.actionsupport;
public
class loginaction extends actionsupport {
private string password;
private usermanager usermanager;
private string username;
public string execute() {
user user = new user();
user.setpassword(password);
user.setusername(username);
usermanager.adduser(user);
return
success;
public string getpassword() {
return
password;
public string getusername() {
return
username;
public
void setpassword(string password) {
this.password = password;
public
void setusermanager(usermanager usermanager) {
this.usermanager = usermanager;
public
void setusername(string username) {
this.username = username;
S2SH整合步驟
s2sh 整合步驟 一.搭建開發環境 1.準備三者的 jar檔案 不要忘記相應資料庫的驅動.2.配置web.xml檔案,主要配置兩項內容 1 自動載入 spring 容器的 contextloaderlistener配置 2 應用 struts2 的過濾器 filterdispatcher配置 3....
S2SH無配置詳解
1.hibernate hebernate3.0後可以使用註解自動對映刪除配置檔案,加入的包是hibernate annotations 3.3.1.ga.jar和ejb3 persistence 1.0.1.ga.jar就可以實現 版本可以不同 例子 entity table name airli...
s2sh整合開發的配置
下面給出整合開發時struts 2 hibernate spring需要的jar,包太多不打字了,直接截圖。ps 我資料庫用的是mysql 的配置模版 第一步在 spring 中配置資料來源 第二步整合進 hibernate hibernate.dialect org.hibernate.diale...