Spring4+ hibernate5
此处参考上一篇博客spring整合hibernate
Spring+hibernate+Struts2
Struts2框架可以自己创建action对象,而Spring是帮我们实现容器注入,不需要我们自己创建对象。所以spring整合struts2的目的
以Struts2为主导,当struts2需要action时,spring帮我们实现action的实例化。
1.导入jar包
Struts架包:
另外得加struts2-spring-plugin-xxxx.jar
Spring jar包:
需要加入spring-web-xxxx.jar。
hibernate和spring详细架包参考上述博客。
2.web.xml文件配置
配置spring监听器,webapp一启动spring容器就初始化了。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Spring_2400_Registration_3</display-name>
<!-- 配置Struts过滤器(拦截所有的请求) -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- struts过滤器拦截请求的规则 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<!--默认情况下位置在WEB-INF/applicationContext.xml -->
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--修改spring配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
默认spring的配置文件在WEB-INF路径下,这里修改到src目录下了。
注意:
获取连接池配置信息的文件路径也得修改
<context:property-placeholder location="classpath:jdbc.properties"/>
不需要spring进行action注入
Struts2为主导不需要使用action注入,Struts2自动帮我们实现,但是不是在容器里面。
但是其中的需要实例化的属性得注入。
public class UserAction extends ActionSupport{
private UserManager um ;
private String username;
private String password;
private String username2;
@Override
public String execute() throws Exception {
User u = new User();
u.setUsername(username);
u.setPassword(password);
if(um.exists(u)){
return "fail";
}
um.add(u);
return "success";
}
public UserManager getUm() {
return um;
}
@Resource(name="userManager")
public void setUm(UserManager um) {
this.um = um;
}
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;
}
public String getUsername2() {
return username2;
}
public void setUsername2(String username2) {
this.username2 = username2;
}
}
struts.xml配置
action 的name=user 容器中注入action的key,@Component(“user”)。
<package name="register" extends="struts-default" namespace="/">
<action name="user" class="com.register.action.UserAction">
<result name="success">/registerSuccess.jsp</result>
<result name="fail">/registerFail.jsp</result>
</action>
</package>
Struts2的读取顺序
1.struts-default.xml
2.struts-plugin.xml(将action的产生交给spring)
3.struts.xml
4.web.xml