struts2整合spring实现拦截器

Struts 2框架整合Spring很简单
1.首先确定所需的包

[img]http://dl.iteye.com/upload/attachment/299894/467e8e94-fb61-3198-b150-c1abfbd16b89.jpg[/img]

2.WEB-INF目录下建立web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.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">
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>



3.建立struts2的action等类LoginAction.java

package com.struts2test;

import service.LoginService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
private String username;
private String password;
private LoginService 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;
}

/**
* 默认执行execute方法
*/
public String execute() throws Exception {
if (loginService.isLogin(username, password)) {
return SUCCESS;
} else {
ActionContext.getContext().put("errorMess", "失败了!");
return INPUT;
}
}
}

自定义struts2的拦截器MyInterceptor.java

package com.struts2test;

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

public class MyInterceptor implements Interceptor {

private static final long serialVersionUID = 1L;

public void destroy() {

}

public void init() {
}

public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("进入Action前执行");
// 执行目标方法 (调用下一个拦截器, 或执行Action)
final String res = invocation.invoke();
System.out.println("进入Action后执行");
return res;
}
}


登录表单的验证xml,LoginAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<message>请输入用户名</message>
</field-validator>
</field>

<field name="password">
<field-validator type="requiredstring">
<message>请输入密码</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>密码长度只能在3 和 10 之间.</message>
</field-validator>
</field>
</validators>


接下来,列出处理登录业务逻辑的接口和实现类。
LoginService.java

package service;

public interface LoginService {
public boolean isLogin(String username,String password);
}

5.LoginServiceImpl.java

package service.impl;

import service.LoginService;

public class LoginServiceImpl implements LoginService {

public boolean isLogin(String username, String password) {
if("admin".equalsIgnoreCase(username)&&"123456".equalsIgnoreCase(password))
{
return true;
}
return false;
}

}

src目录下建立struts.xml和struts.properties文件


<?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>
<package name="mldn" namespace="" extends="struts-default">
<interceptors>
<interceptor name="MyInterceptor" class="com.struts2test.MyInterceptor"></interceptor>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="MyInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>

<action name="login">
<result name="success">/login.jsp</result>
</action>

<action name="checklogin" class="com.struts2test.LoginAction">
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
<interceptor-ref name="myInterceptorStack"></interceptor-ref>
</action>
</package>
</struts>


struts.properties

struts.action.extension=action
struts.tag.altSyntax=true
struts.devMode=true
struts.ui.theme=simple
struts.ui.templateDir=WEB-INF/d_template

WEB-INF/d_template是我将struts-core*中的template解出来,然后放到项目的WEB-INF下,在struts.properties中重新修改了simple下的fielderror.ftl文件,将该文件中的 <li>和 </li>删除了。
WEB-INF下增加applicationContext.xml,用来定义spring的注入类。

<?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.5.xsd">

<bean id="loginService" class="service.impl.LoginServiceImpl"/></beans>


定义web页面login.jsp

<%@ page language="java" pageEncoding="UTF-8" isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录系统</title>
</head>
<body>
<h2>登录系统 ${errorMess}</h2>
<hr>
<form action="checklogin.action" method="post">
用户名:<input type="text" name="username">
<s:fielderror cssStyle="color: red">
<s:param>username</s:param>
</s:fielderror><br>
密 码:<input type="text" name="password" >
<s:fielderror cssStyle="color: red">
<s:param>password</s:param>
</s:fielderror><br>
<input type="submit" value="发送">
</form>
<s:fielderror cssStyle="color: red"></s:fielderror>
</body>
</html>



大概就是如此了,附件为完整文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值