Struts 2框架整合Spring很简单
1.首先确定所需的包
[img]http://dl.iteye.com/upload/attachment/299894/467e8e94-fb61-3198-b150-c1abfbd16b89.jpg[/img]
2.WEB-INF目录下建立web.xml
3.建立struts2的action等类LoginAction.java
自定义struts2的拦截器MyInterceptor.java
登录表单的验证xml,LoginAction-validation.xml
接下来,列出处理登录业务逻辑的接口和实现类。
LoginService.java
5.LoginServiceImpl.java
src目录下建立struts.xml和struts.properties文件
struts.properties
WEB-INF/d_template是我将struts-core*中的template解出来,然后放到项目的WEB-INF下,在struts.properties中重新修改了simple下的fielderror.ftl文件,将该文件中的 <li>和 </li>删除了。
WEB-INF下增加applicationContext.xml,用来定义spring的注入类。
定义web页面login.jsp
大概就是如此了,附件为完整文件。
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>
大概就是如此了,附件为完整文件。