1、Struts2-Spring框架整合
步骤:
(1)创建Web项目
(2)添加Struts特性,同时勾选Struts 2 Spring Libraries资源库。
(3)添加Spring特性,同时勾选Spring3.0 Web Librariesz资源库。
(4) 在web.xml中,添加Spring的监听器。
(5) 创建struts.properties:让struts由spring托管
(6) 修改applicationContext.xml配置
2、如果在Struts配置文件里单独命名了一个命名空间,那么根据result跳转的那个页面默认的路径是在你命名的命名空间底下的路径。如下:
<package name="admin" namespace="/admin" extends="default">
<action name="AdminControl" class="adminControl">
<result name="updateSuccess">success.jsp</result>
<result name="updateFail">error.jsp</result>
</action>
</package>
默认查找的路径为/admin/success.jsp
它默认访问的是admin文件夹底下的success.jsp
而不是根路径的success.jsp
3、SSH框架中,DAOImpl中的方法有参数,而Control层中的同样的方法不能带参数,如果带了参数,可能找不到这个Action。
实现层方法:
package com.my.dao.impl;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.my.dao.IAdminDao;
import com.my.vo.Admin;
@Repository
public class AdminImpl implements IAdminDao {
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public boolean updateAdmin(Admin admin) {
// TODO Auto-generated method stub
boolean result=false;
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();
session.update(admin);
transaction.commit();
result=true;
session.close();
return result;
}
}
控制层方法:
package com.my.action;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.my.service.IAdminService;
import com.my.vo.Admin;
import com.opensymphony.xwork2.ActionSupport;
@Controller("adminControl")
public class AdminControl extends ActionSupport {
@Autowired
private IAdminService adminService;
private Admin admin;
public IAdminService getAdminService() {
return adminService;
}
public void setAdminService(IAdminService adminService) {
this.adminService = adminService;
}
public Admin getAdmin() {
return admin;
}
public void setAdmin(Admin admin) {
this.admin = admin;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
public String updateAdmin(){
boolean result=adminService.updateAdmin(admin);
if(result){
return "updateSuccess";
}
else{
return"updateFail";
}
}
}