spring结合struts的代码详解

网友投稿 255 2023-04-04


spring结合struts的代码详解

Struts调用流程如下图所示。

看到这幅图一下子就能了解了struts的原理。Spring的核心就是IOC容器和AOP,所以我们用spring主要是管理业务对象和事务的管理,所以主要是Model层来让spring管理,这是我们的一种方案。

第一种集成方案在Action中取得beanFactory

还记的在上篇文章中,测试的时候是在单元测试中拿到的BeanFactory,与struts结合就是在Action中取得beanFactory。步骤如下。

1、          建立一个web项目。

2、          建立相关页面,代码如下所示。

Login.jsp代码入下所示。

<%@ pagelanguage="java" contentType="text/hhttp://tml; charset=GB18030"

pageEncoding="GB18030"%>

用户:

密码:

Login_success.jsp

<%@ pagelanguage="java" contentType="text/html; charset=GB18030"

pageEnchttp://oding="GB18030"%>

xx,用户登录成功!

3、 配置struts环境,关于struts的配置,拷贝struts和jstl的依赖包;在web.xml中配置ActionServlet,提供struts-config.xml文件。前篇文中有说明,在此就不赘述了。

struts-config.xml代码如下所示。

type="com.bjpowernode.usermgr.web.actions.LoginAction"

name="loginForm"

scope="request"

>

4、 配置spring环境,拷贝spring相关jar包,建立spring配置文件applicationContext-beans.xml。

applicationContext-beans.xml代码如下所示。

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beanshttp://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aophttp://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/txhttp://springframework.org/schema/tx/spring-tx-2.0.xsd">

5、 建立相关的Action和ActionForm。代码如下所示。

LoginAction.java代码如下所示。

public class LoginAction extendsAction {

@Override

publicActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequestrequest, HttpServletResponse response)

throwsException {

LoginActionFormlaf = (LoginActionForm)form;

Stringusername = laf.getUsername();

Stringpassword = laf.getPassword();

//但是我们每次都要去调用,去创建太麻烦了.

//我们在这里只需要去配置Listener就可以了,spring给实现好了.

BeanFactoryfactory = newClassPathXmlApplicationContext("applicationContext.xml");

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(username,password);

}

}

LoginActionForm.java代码如下所示。

public class LoginActionFormextends ActionForm {

//表单上有什么提供什么属性.

//名字一定要与表单中的一样.

privateString username;

publicString getUsername() {

returnusername;

}

publicvoid setUsername(String username) {

this.username= username;

}

privateString password;

publicString getPassword() {

returnpassword;

}

publicvoid setPassword(String password) {

this.password= password;

}

}

6、 建立业务逻辑层,代码如下所示。

UserManager代码如下所示。

public interface UserManager {

publicvoid login(String username, String password);

}

UserManagerImpl.java代码如下所示。

public class UserManagerImplimplements UserManager {

publicvoid login(String username, String password) {

System.out.println("UserManagerImpl"+"username="+ username);

}

}

7、 web.xml配置文件代码如下所示。

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

2

detail

2

2

就这样我们在LoginAction中,使用beanFactory读取spring配置文件,找到UserManagerImpl实例。如果每次在Action中读取application-beans.xml文件,我们是否可以在服务器启动的时候就就创建BeanFactory呢?在这里我们可以使用spirng的工具WebApplicationContextUtils.getRequiredWebApplicationContext()从  ServletContext中  取得BeanFactory,然后再web.xml中配置Spring的Listener。

修改后,LoginAction代码如下所示。

public class LoginAction extendsAction {

@Override

publicActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequestrequest, HttpServletResponse response)

throwsException {

LoginActionFormlaf = (LoginActionForm)form;

Stringusername = laf.getUsername();

Stringpassword = laf.getPassword();

//用工具包直接拿出来就可以了。

BeanFactoryfactory =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(username,password);

returnmapping.findForward("success");

}

}

加入相关配置,web.xml代码如下所示。

contextConfigLocation

classpath:applicationContext-*.xml

org.springframework.web.context.ContextLoaderListener

这种方案缺点:

我们在在Action中仍然看到Spring相关东西,看到Spring相关类,要是程序只看到的是接口,那要怎么做呢?

第二种方案,将struts的Aciton交给Spring来创建,让代理Action负责拿到beanFactory,根据Path名称到IOC中把对应的Action取出来。

我们是在Model层应用spring,在Action中取得BeanFactory,然后通过SpringIOC来找到Model层的bean。但是这这样存在一些问题,我们在Action中使用的是Spring相关的静态类,这就说明我们依赖的是Spring的静态类,我们希望所依赖的是接口而不是类,符合设计原则,面向接口编程,这样也容易扩展和维护。于是在此基础上进行改进。

第二种方案是将Struts的Action交给Spring创建,这样业务逻辑对象将被注入,这样就避免了依赖查找,而Spring中会有一个代理Action,通过代理ActionProxy取得banFactory。方案一和方案二的对比图如下图所示。

这样就不用Spring的Listener了,所以我们的web.xml配置文件代码如下所示。

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://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">

index.jsp

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

2

detail

2

2

同时再struts的配置文件,struts-config.xml中,在标签中配置Action,也不再配置我们自己建立的Action,而是配置Spring自己的代理Action。代码如下所示。

"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

type="org.springframework.web.struts.DelegatingActionProxy"

name="loginForm"

scope="request"

>

Spring对Aciton的配置文件如下所示。applicationContext-actions.xml.

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aop http://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/tx http://springframework.org/schemazWuSTu/tx/spring-tx-2.0.xsd">

在这里配置对应的本系统实际的Action,注意名字一定要和struts中代理Action一致!并且设置每次创建一个新的Action,而不是共用一个Action,scope="prototype"。

这样在LoginAction中,我们不用再看到创建Model和工厂的细节,使用SpringIOC,创建Model,UserManager,并且配置文件中注入LoginAction,这样LoginAction代码如下所示。

public class LoginAction extends Action {

private UserManager userManager;

// 让spring注入,LoginAction让Spring管理, 不是让strus创建而是由spring创建.

public void setUserManager(UserManager userManager) {

this.userManager = userManager;

}

@Override

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

LoginActionForm laf = (LoginActionForm) form;

String username = laf.getUsername();

String password = laf.getPassword();

userManager.login(username, password);

return mapping.findForward("success");

}

}

小结:

Spring框架就相当于我们的工具,我们把工具挖掘和使用的淋漓尽致才好,这可能就是人和工具的区别,人利用创造和利用工具,工具被创造和被利用。这中间的过程就是磨合了。

type="com.bjpowernode.usermgr.web.actions.LoginAction"

name="loginForm"

scope="request"

>

4、 配置spring环境,拷贝spring相关jar包,建立spring配置文件applicationContext-beans.xml。

applicationContext-beans.xml代码如下所示。

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beanshttp://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aophttp://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/txhttp://springframework.org/schema/tx/spring-tx-2.0.xsd">

5、 建立相关的Action和ActionForm。代码如下所示。

LoginAction.java代码如下所示。

public class LoginAction extendsAction {

@Override

publicActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequestrequest, HttpServletResponse response)

throwsException {

LoginActionFormlaf = (LoginActionForm)form;

Stringusername = laf.getUsername();

Stringpassword = laf.getPassword();

//但是我们每次都要去调用,去创建太麻烦了.

//我们在这里只需要去配置Listener就可以了,spring给实现好了.

BeanFactoryfactory = newClassPathXmlApplicationContext("applicationContext.xml");

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(username,password);

}

}

LoginActionForm.java代码如下所示。

public class LoginActionFormextends ActionForm {

//表单上有什么提供什么属性.

//名字一定要与表单中的一样.

privateString username;

publicString getUsername() {

returnusername;

}

publicvoid setUsername(String username) {

this.username= username;

}

privateString password;

publicString getPassword() {

returnpassword;

}

publicvoid setPassword(String password) {

this.password= password;

}

}

6、 建立业务逻辑层,代码如下所示。

UserManager代码如下所示。

public interface UserManager {

publicvoid login(String username, String password);

}

UserManagerImpl.java代码如下所示。

public class UserManagerImplimplements UserManager {

publicvoid login(String username, String password) {

System.out.println("UserManagerImpl"+"username="+ username);

}

}

7、 web.xml配置文件代码如下所示。

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

2

detail

2

2

就这样我们在LoginAction中,使用beanFactory读取spring配置文件,找到UserManagerImpl实例。如果每次在Action中读取application-beans.xml文件,我们是否可以在服务器启动的时候就就创建BeanFactory呢?在这里我们可以使用spirng的工具WebApplicationContextUtils.getRequiredWebApplicationContext()从  ServletContext中  取得BeanFactory,然后再web.xml中配置Spring的Listener。

修改后,LoginAction代码如下所示。

public class LoginAction extendsAction {

@Override

publicActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequestrequest, HttpServletResponse response)

throwsException {

LoginActionFormlaf = (LoginActionForm)form;

Stringusername = laf.getUsername();

Stringpassword = laf.getPassword();

//用工具包直接拿出来就可以了。

BeanFactoryfactory =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(username,password);

returnmapping.findForward("success");

}

}

加入相关配置,web.xml代码如下所示。

contextConfigLocation

classpath:applicationContext-*.xml

org.springframework.web.context.ContextLoaderListener

这种方案缺点:

我们在在Action中仍然看到Spring相关东西,看到Spring相关类,要是程序只看到的是接口,那要怎么做呢?

第二种方案,将struts的Aciton交给Spring来创建,让代理Action负责拿到beanFactory,根据Path名称到IOC中把对应的Action取出来。

我们是在Model层应用spring,在Action中取得BeanFactory,然后通过SpringIOC来找到Model层的bean。但是这这样存在一些问题,我们在Action中使用的是Spring相关的静态类,这就说明我们依赖的是Spring的静态类,我们希望所依赖的是接口而不是类,符合设计原则,面向接口编程,这样也容易扩展和维护。于是在此基础上进行改进。

第二种方案是将Struts的Action交给Spring创建,这样业务逻辑对象将被注入,这样就避免了依赖查找,而Spring中会有一个代理Action,通过代理ActionProxy取得banFactory。方案一和方案二的对比图如下图所示。

这样就不用Spring的Listener了,所以我们的web.xml配置文件代码如下所示。

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://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">

index.jsp

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

2

detail

2

2

同时再struts的配置文件,struts-config.xml中,在标签中配置Action,也不再配置我们自己建立的Action,而是配置Spring自己的代理Action。代码如下所示。

"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

type="org.springframework.web.struts.DelegatingActionProxy"

name="loginForm"

scope="request"

>

Spring对Aciton的配置文件如下所示。applicationContext-actions.xml.

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aop http://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/tx http://springframework.org/schemazWuSTu/tx/spring-tx-2.0.xsd">

在这里配置对应的本系统实际的Action,注意名字一定要和struts中代理Action一致!并且设置每次创建一个新的Action,而不是共用一个Action,scope="prototype"。

这样在LoginAction中,我们不用再看到创建Model和工厂的细节,使用SpringIOC,创建Model,UserManager,并且配置文件中注入LoginAction,这样LoginAction代码如下所示。

public class LoginAction extends Action {

private UserManager userManager;

// 让spring注入,LoginAction让Spring管理, 不是让strus创建而是由spring创建.

public void setUserManager(UserManager userManager) {

this.userManager = userManager;

}

@Override

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

LoginActionForm laf = (LoginActionForm) form;

String username = laf.getUsername();

String password = laf.getPassword();

userManager.login(username, password);

return mapping.findForward("success");

}

}

小结:

Spring框架就相当于我们的工具,我们把工具挖掘和使用的淋漓尽致才好,这可能就是人和工具的区别,人利用创造和利用工具,工具被创造和被利用。这中间的过程就是磨合了。

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beanshttp://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aophttp://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/txhttp://springframework.org/schema/tx/spring-tx-2.0.xsd">

5、 建立相关的Action和ActionForm。代码如下所示。

LoginAction.java代码如下所示。

public class LoginAction extendsAction {

@Override

publicActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequestrequest, HttpServletResponse response)

throwsException {

LoginActionFormlaf = (LoginActionForm)form;

Stringusername = laf.getUsername();

Stringpassword = laf.getPassword();

//但是我们每次都要去调用,去创建太麻烦了.

//我们在这里只需要去配置Listener就可以了,spring给实现好了.

BeanFactoryfactory = newClassPathXmlApplicationContext("applicationContext.xml");

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(username,password);

}

}

LoginActionForm.java代码如下所示。

public class LoginActionFormextends ActionForm {

//表单上有什么提供什么属性.

//名字一定要与表单中的一样.

privateString username;

publicString getUsername() {

returnusername;

}

publicvoid setUsername(String username) {

this.username= username;

}

privateString password;

publicString getPassword() {

returnpassword;

}

publicvoid setPassword(String password) {

this.password= password;

}

}

6、 建立业务逻辑层,代码如下所示。

UserManager代码如下所示。

public interface UserManager {

publicvoid login(String username, String password);

}

UserManagerImpl.java代码如下所示。

public class UserManagerImplimplements UserManager {

publicvoid login(String username, String password) {

System.out.println("UserManagerImpl"+"username="+ username);

}

}

7、 web.xml配置文件代码如下所示。

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

2

detail

2

2

就这样我们在LoginAction中,使用beanFactory读取spring配置文件,找到UserManagerImpl实例。如果每次在Action中读取application-beans.xml文件,我们是否可以在服务器启动的时候就就创建BeanFactory呢?在这里我们可以使用spirng的工具WebApplicationContextUtils.getRequiredWebApplicationContext()从  ServletContext中  取得BeanFactory,然后再web.xml中配置Spring的Listener。

修改后,LoginAction代码如下所示。

public class LoginAction extendsAction {

@Override

publicActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequestrequest, HttpServletResponse response)

throwsException {

LoginActionFormlaf = (LoginActionForm)form;

Stringusername = laf.getUsername();

Stringpassword = laf.getPassword();

//用工具包直接拿出来就可以了。

BeanFactoryfactory =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(username,password);

returnmapping.findForward("success");

}

}

加入相关配置,web.xml代码如下所示。

contextConfigLocation

classpath:applicationContext-*.xml

org.springframework.web.context.ContextLoaderListener

这种方案缺点:

我们在在Action中仍然看到Spring相关东西,看到Spring相关类,要是程序只看到的是接口,那要怎么做呢?

第二种方案,将struts的Aciton交给Spring来创建,让代理Action负责拿到beanFactory,根据Path名称到IOC中把对应的Action取出来。

我们是在Model层应用spring,在Action中取得BeanFactory,然后通过SpringIOC来找到Model层的bean。但是这这样存在一些问题,我们在Action中使用的是Spring相关的静态类,这就说明我们依赖的是Spring的静态类,我们希望所依赖的是接口而不是类,符合设计原则,面向接口编程,这样也容易扩展和维护。于是在此基础上进行改进。

第二种方案是将Struts的Action交给Spring创建,这样业务逻辑对象将被注入,这样就避免了依赖查找,而Spring中会有一个代理Action,通过代理ActionProxy取得banFactory。方案一和方案二的对比图如下图所示。

这样就不用Spring的Listener了,所以我们的web.xml配置文件代码如下所示。

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://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">

index.jsp

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

2

detail

2

2

同时再struts的配置文件,struts-config.xml中,在标签中配置Action,也不再配置我们自己建立的Action,而是配置Spring自己的代理Action。代码如下所示。

"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

type="org.springframework.web.struts.DelegatingActionProxy"

name="loginForm"

scope="request"

>

Spring对Aciton的配置文件如下所示。applicationContext-actions.xml.

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aop http://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/tx http://springframework.org/schemazWuSTu/tx/spring-tx-2.0.xsd">

在这里配置对应的本系统实际的Action,注意名字一定要和struts中代理Action一致!并且设置每次创建一个新的Action,而不是共用一个Action,scope="prototype"。

这样在LoginAction中,我们不用再看到创建Model和工厂的细节,使用SpringIOC,创建Model,UserManager,并且配置文件中注入LoginAction,这样LoginAction代码如下所示。

public class LoginAction extends Action {

private UserManager userManager;

// 让spring注入,LoginAction让Spring管理, 不是让strus创建而是由spring创建.

public void setUserManager(UserManager userManager) {

this.userManager = userManager;

}

@Override

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

LoginActionForm laf = (LoginActionForm) form;

String username = laf.getUsername();

String password = laf.getPassword();

userManager.login(username, password);

return mapping.findForward("success");

}

}

小结:

Spring框架就相当于我们的工具,我们把工具挖掘和使用的淋漓尽致才好,这可能就是人和工具的区别,人利用创造和利用工具,工具被创造和被利用。这中间的过程就是磨合了。

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://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">

index.jsp

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

2

detail

2

2

同时再struts的配置文件,struts-config.xml中,在标签中配置Action,也不再配置我们自己建立的Action,而是配置Spring自己的代理Action。代码如下所示。

"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

type="org.springframework.web.struts.DelegatingActionProxy"

name="loginForm"

scope="request"

>

type="org.springframework.web.struts.DelegatingActionProxy"

name="loginForm"

scope="request"

>

Spring对Aciton的配置文件如下所示。applicationContext-actions.xml.

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aop http://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/tx http://springframework.org/schemazWuSTu/tx/spring-tx-2.0.xsd">

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans-2.0.xsd

http://springframework.org/schema/aop http://springframework.org/schema/aop/spring-aop-2.0.xsd

http://springframework.org/schema/tx http://springframework.org/schemazWuSTu/tx/spring-tx-2.0.xsd">

在这里配置对应的本系统实际的Action,注意名字一定要和struts中代理Action一致!并且设置每次创建一个新的Action,而不是共用一个Action,scope="prototype"。

这样在LoginAction中,我们不用再看到创建Model和工厂的细节,使用SpringIOC,创建Model,UserManager,并且配置文件中注入LoginAction,这样LoginAction代码如下所示。

public class LoginAction extends Action {

private UserManager userManager;

// 让spring注入,LoginAction让Spring管理, 不是让strus创建而是由spring创建.

public void setUserManager(UserManager userManager) {

this.userManager = userManager;

}

@Override

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

LoginActionForm laf = (LoginActionForm) form;

String username = laf.getUsername();

String password = laf.getPassword();

userManager.login(username, password);

return mapping.findForward("success");

}

}

小结:

Spring框架就相当于我们的工具,我们把工具挖掘和使用的淋漓尽致才好,这可能就是人和工具的区别,人利用创造和利用工具,工具被创造和被利用。这中间的过程就是磨合了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:myeclipse8.5优化技巧详解
下一篇:浅谈vue中数据双向绑定的实现原理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~