博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2整合spring应用实例
阅读量:7214 次
发布时间:2019-06-29

本文共 6804 字,大约阅读时间需要 22 分钟。

    我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的,以下通过具体一个用户登录实现来说明struts2整合spring的相关内容.

 

  一、
准备工作
        

 1.实例分析我们在这不与数据库打交道,所有就是当用登录的时候判断用户名是否为指定值,密码是否为指定值,以及相关的异常处理、

        2.为什么我们要说struts2整合spring呢?相信在家都知道,我也不用多说了....
        4.在  下载struts2的jar包,源码,API文档.
        5.在  下载不同版本的spring的jar包,源码,API文档.
        6.配置开发环境:MyEclipse6.0+Eclipse3.3+JDK6.0+Tomcat6.0+Struts 2.0.11+spring2.0
    7.新建web项目,导入相应的jar包,如以下所示:
     a.由于现在IDE开发工具还没有对struts2.0有很好的支持,所有我们需要手功配置,首先将我们刚下下来的struts2.0的lib里面的commons-logging-1.0.4.jar、ognl-2.6.11.jar、xwork-2.0.4.jar、freemarker-2.3.8.jar、struts2-core-2.0.11.1.jar以及struts2.0里面所需要的插件包struts2-spring-plugin-2.0.11.1.jar添加的WEB-INF/lib下面
     b.通过通过IDE开发工具项目对spring2.0的支持
    7.在src下建立struts.xml文件(具体的写法在后面呈现)

    8.配置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"
>
    
    
    
<!--
 加载struts2核心 
-->
    
<
filter
>
        
<
filter-name
>struts2
</
filter-name
>
        
<
filter-class
>
            org.apache.struts2.dispatcher.FilterDispatcher
        
</
filter-class
>
    
</
filter
>
    
<
filter-mapping
>
        
<
filter-name
>struts2
</
filter-name
>
        
<
url-pattern
>/*
</
url-pattern
>
    
</
filter-mapping
>
    
<!--
 指明spring配置文件在何处 
-->
    
<
context-param
>
        
<
param-name
>contextConfigLocation
</
param-name
>
        
<
param-value
>classpath*:applicationContext.xml
</
param-value
>
    
</
context-param
>
    
<!--
 加载spring配置文件applicationContext.xml 
-->
    
<
listener
>
        
<
listener-class
>
            org.springframework.web.context.ContextLoaderListener
        
</
listener-class
>
    
</
listener
>    
</
web-app
>

 

二、
建立前台页面

      1.用户登录肯定有一个用户登录页面login.jsp,如下:

<%@ page language=
"
java
"  pageEncoding=
"
GB2312
" %>
<%@ taglib prefix=
"
s
"  uri=
"
/struts-tags
" %>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//CN"
>
<
html
>
  
<
head
>
      
<
title
>login2
</
title
>
  
</
head
>
  
<
body
>
      
<
s:form 
name
="login"
 action
="login"
 method
="post"
 
>
          
<
s:textfield 
name
="username"
 label
="帐号"
></
s:textfield
>
          
<
s:password 
name
="password"
  label
="密码"
></
s:password
>
          
<
s:submit
></
s:submit
>
      
</
s:form
>
  
</
body
>

</html> 

 

   2.若登录成功的index.jsp文件,如下:

<%@ page language=
"
java
"  pageEncoding=
"
GB2312
" %>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//CN"
>
<
html
>
  
<
head
>
      
<
title
>login2
</
title
>
  
</
head
>
    
  
<
body
>
          
<
div
>
              
<
h4
>欢迎你!
</
h4
><
font 
color
="red"
>${username}
</
font
>
              
<
br
/>
              
<
h4
>你登录的密码是
<
h4
><
font 
color
="red"
>${password}
</
font
>;
          
</
div
>
  
</
body
>

</html> 

 

 3、用户名非法提示页面.usernameInvalid.jsp(通过el表达示得到异常信息)

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

    pageEncoding=
"
GB18030
" %>
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
>
<
html
>
<
head
>
<
meta 
http-equiv
="Content-Type"
 content
="text/html; charset=GB18030"
>
<
title
>Insert title here
</
title
>
</
head
>
<
body
>
    用户名非法:
<
font 
color
="red"
>${exception.message}
</
font
>
</
body
>
</
html
>

 4、密码非法提示页面.passwordInvalid.jsp(struts2标签得到异常信息);

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

    pageEncoding=
"
GB18030
" %>
  <%@ taglib prefix=
"
s
" uri=
"
/struts-tags
" %>
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
>
<
html
>
<
head
>
<
meta 
http-equiv
="Content-Type"
 content
="text/html; charset=GB18030"
>
<
title
>Insert title here
</
title
>
</
head
>
<
body
>
    密码非法:
<
FONT  
color
="red"
><
s:property 
value
="exception.message"
/></
FONT
>
</
body
>
</
html
>

 

  三、建立对应的action

       1.提供用户请求服务的LoginService类

 

 package org.topCSA.s2s.service;

import org.topCSA.s2s.exception.PasswordException;
import org.topCSA.s2s.exception.UsernameException;
public 
class LoginService
{
    
/*
     * 我们这只是一个小的例子,不与数据库打交到
     * 若有数据库操作,那么在这个LoginService就是操作具体Dao类实现登录的相关操作
     
*/
    
public 
boolean validate(String username,String password)
throws Exception
    {
        
boolean v = 
false;
        
if(!"xcp".equals(username))
//
如果用户名不等于xcp,就抛出一个异常
        {
            
throw 
new UsernameException("用户名不正确");
        }
        
else 
if(!"123".equals(password))))
//
如果密码不等于123,就抛出一个异常
        {
            
throw 
new PasswordException("密码不正确");
        }
        
else
        {
            v = 
true;            
        }
        
return v;
    }
}

 

  2.接收用户请求的LoginAction类

 package org.topCSA.s2s.action;

import org.topCSA.s2s.service.LoginService;
import com.opensymphony.xwork2.ActionSupport;
public 
class LoginAction 
extends ActionSupport
{
    
/**
     * 
     
*/
    
private 
static 
final 
long serialVersionUID = 1L;
    
private String username;
    
private String password;
    
    
/*
     * 我们通过Spring的IOC容器注入LoginService,从而减少类之间的依赖关系
     
*/
    
private LoginService loginService;
    
    
public LoginService getLoginService()
    {
        
return loginService;
    }
    
public 
void setLoginService(LoginService loginService)
    {
        
this.loginService = loginService;
    }
    
public String getUsername()
    {
        
return username;
    }
    
public 
void setUsername(String username)
    {
        
this.username = username;
    }
    
public String getPassword()
    {
        
return password;
    }
    
public 
void setPassword(String password)
    {
        
this.password = password;
    }
    
    
    @Override
    
public 
void validate()
    {
        
/*
         * 我们可以在这个方法类加一些输入验证 但是为了体现后面我们写的业务逻辑方法这就不验证
         
*/
    }
    
    @Override
    
public String execute() 
throws Exception
    {
        
        
boolean result = loginService.validate(username, password);
        
if(result == 
true)
        {
            
return SUCCESS;
        }
        
else
        {
            
return INPUT;
        }
    }
}

  四、配置struts.xml与applicationContext.xml

    
        1.配置struts.properties,为了解决中文问题,具体用法参照struts2的用法如下:里面加上
struts.i18n.encoding = gb2312,当然也可以直接加到struts.xml里面写法为<constant name="struts.i18n.encoding" value="gbk"></constant>

        2.配置struts.xml

 <?xml version="1.0" encoding="GB2312" ?>

<!
DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
>
<
struts
>
    
<
package 
name
="struts2"
 extends
="struts-default"
>
        
<
action 
name
="login"
 class
="LoginAction"
>
            
<
exception-mapping 
result
="usernameInvalid"
 exception
="org.topCSA.s2s.exception.UsernameException"
 
/>
            
<
exception-mapping 
result
="passwordInvalid"
 exception
="org.topCSA.s2s.exception.PasswordException"
 
/>
            
<
result 
name
="success"
>/index.jsp
</
result
>
            
<
result 
name
="input"
>/login.jsp
</
result
>
            
<
result 
name
="usernameInvalid"
>/usernameInvalid.jsp
</
result
>
            
<
result 
name
="passwordInvalid"
>/passwordInvalid.jsp
</
result
>
        
</
action
>
    
</
package
>
</
struts
>

 

   3.配置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 
name
="loginService"
 class
="org.topCSA.s2s.service.LoginService"
 
/>
    
    
<
bean 
name
="LoginAction"
 class
="org.topCSA.s2s.action.LoginAction"
>
        
<
property 
name
="loginService"
>
            
<
ref 
bean
="loginService"
/>
        
</
property
>
    
</
bean
>        
</
beans
>

 

转载于:https://www.cnblogs.com/xuhn/archive/2012/09/16/2688021.html

你可能感兴趣的文章
PHP有前途吗?
查看>>
sm1、sm2、sm3、sm4简单介绍
查看>>
精读《Optional chaining》
查看>>
jQuery选择器
查看>>
c++——四种强转方式 static_cast dynamic_cast const_cast reinterpret_cast
查看>>
Swift 学习
查看>>
【HDU】6148 Valley Numer 数位DP
查看>>
windows下使用hbase/opencv/ffmpeg小记
查看>>
有害的“这样效率最高”思维
查看>>
CodeForces 438D 线段树 剪枝
查看>>
PG,PL,SE,PM都是什么意思,职责划分
查看>>
MyEclipse8.6安装svn(非link方式)
查看>>
SecureCRT恢复默认字体
查看>>
Ubuntu下安装、卸载notepad++
查看>>
Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库
查看>>
C# 网卡IP(网上资料整理)
查看>>
html网站网址一键打包成App平台-开心App平台
查看>>
使用react的一点提醒17/10/26
查看>>
Java 内部类的阐述
查看>>
redis-大key寻找
查看>>