在之前的SpringDemo中,已将Spring和Hibernate整合到了1起,现在将Struts整合到SpringDemo中,这样就是1个完全的基于SSH的简单项目了。
在全部项目的构建进程,我基本是由内向外――先导入jar包、整理配置文件,再完成持久层和控制层的接口和类,最后建立表现层的jsp页面。这样的好处是:每完成1步即可以测1下,及时修改毛病;继续下1层的时候不用再操心前面的内容。
1、导入strut2的jar包:
commons-logging⑴.0.4.jar----------Jakarta的通用日志记录包
reemarker⑵.3.8.jar--------------------FreeMarker是1个模板引擎,1个基于模板生成文本输出的通用工具
ognl⑵.6.11.jar--------------------------支持ognl表达式
struts2-core⑵.0.12.jar----------------struts2的核心包
xwork⑵.06.jar--------------------------xwork的包由于Struts2是由xwork的延伸,有些类仍然关联着 xwork的类
commons-fileupload⑴.2.1.jar ------- struts的上传下载
(ognl是1种功能强大的表达式,通过它简单1致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历全部对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。)
添加struts2-spring整合的插件:struts2-spring-plugin⑵.0.12.jar
Struts2与Spring的集成要用到Spring插件包struts2-spring-plugin-x-x-x.jar是同Struts21起发布的。
Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创建1个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到,则由 Spring创建,否则由Struts2框架本身创建,然后由Spring来装配。
如果不使用这个插件,则需要在struts.xml里面配置:
Xml代码以下:
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.objectFactory.spring.autoWire" value="name" />
struts2-spring插件具体有以下几个作用:
1.允许Spring创建Action、Interceptror和Result。
2. 由Struts创建的对象能够被Spring装配。
3.如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action。
2、在web.xml里面配置struts2用到的核心过滤器。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3、在src目录下新建struts.xml文件来配置。
<?xml version="1.0" encoding="UTF⑻"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts⑵.0.dtd">
<struts>
<constant name="struts.objectFactory" value="spring" />
<!-- struts2的action必须放在1个指定的包空间下定义 -->
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="loginAction" method="execute">
<result name="success">/WEB-INF/success.jsp</result>
<result name="login">/WEB-INF/login.jsp</result>
</action>
</package>
</struts>
4、建立LoginAction,采取@Autowried自动注入AccountService。
LoginAction.java代码以下:
package com.demo.action;
import org.springframework.beans.factory.annotation.Autowired;
import com.demo.service.AccountService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = ⑴438866827399732426L;
@Autowired
private AccountService accountService;
private String username;
private String password;
@Override
public String execute(){
System.out.println("run execute...");
if(accountService.hasMatchAccount(username, password)){
return SUCCESS;
}
return LOGIN;
}
public String getUsername(){
return username;
}
public void setUsername(String name){
this.username = name;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
}
5、修改login.jsp,添加success.jsp
login.jsp内容以下:
<%@ page language="java" contentType="text/html; charset=UTF⑻"
pageEncoding="UTF⑻"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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=UTF⑻">
<title>Insert title here</title>
</head>
<body>
<s:form action="login" method="post">
<s:label value="系统登陆"></s:label>
<s:textfield name="username" label="账号" />
<s:password name="password" label="密码" />
<s:submit value="登录" />
</s:form>
</body>
</html>
success.jsp内容以下:
<%@ page language="java" contentType="text/html; charset=UTF⑻"
pageEncoding="UTF⑻"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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=UTF⑻">
<title>Insert title here</title>
</head>
<body>
<h2>欢迎<s:property value="username"/>!</h2>
</body>
</html>
6、这样我们就完成了对Struts2的简单整合,完成了1个简单的基于SSH框架的登陆Demo。对SSH有了1个基本的了解,接下来将进行更深入的学习。
由于在跟老师做项目的时候用过Spring,感觉还不错;因此在学习的进程中主要以Spring为核心,来拓展对其他框架的学习。
每一个框架都有其丰富的功能,任何1篇文章、1部书不可能穷尽其特性。需要在在实践进程中,边学边用,逐步熟习。