1.简单讲解spring和struts2整合
首先导入struts的jar,hibernate的jar,spring的jar,数据库的驱动包XX.jar放入lib包中。
接下来编写实体类
User.java
package com.s2sh.mobel; import java.io.Serializable; public class User implements Serializable{ private static final long serialVersionUID = -2974230401163436730L; private Integer id; private String name; private String password; private String firstname; private String lastname; private Integer age; private User(){} private User(Integer id , String firstname , String lastname , Integer age,String name,String password){ this.id = id; this.firstname = firstname; this.lastname = lastname; this.age = age; this.name=name; this.password=password; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void setName(String name) { this.name = name; } public String getName() { return name; } }
将User.xml放在同一包下,模版与数据库映射。
提供hibernate配置文件
hibernate.cfg.xml
在spring中,本身没有提供ORM的实现,但是提供了一些帮助类他们会提供ORM工具的支持,例如Hibernate、Ojdbc、iBatis等。
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/s2sh root wj
注意:bean的id 可以随便写,sessionfactory依赖数据源,所以要注射进来bean id=“”,接下来
工厂:
com/s2sh/mobel/User.hbm.xml org.hibernate.dialect.MySQLDialect true
还有一个,mvc三层架构,dao实现类注入,Servce业务逻辑注入,action注入
简单的用户登录填写:
注意,url请求找web.xml,通过拦截器和监听器进行操作,然后寻找struts.xml,然后struts class=“”会告诉继续找spring,spring的class=“”,会告诉具体找那个struts的action类,找到之后 获取rquest 参数,然后调用业务逻辑,把记过放进作用于,返回。在这里,我采用action注入servce,action注入user对象,servce类中注入dao,dao类中注入hibernateTemplate。
2.可以使用spring中的HibernateDaoSupport和HibernateTemplate类简化HibernateDao的实现类的编写。
public void delete(User id){ //获得hibernate事务 template =getHiberanteTemplate(); //获得对象 user =(User)template.get(User.class,id); //spring事务会进行操作删除对象 template.delete(user); }
注意:因为dao继承HibernateDaoSupper 所以要重写delete(),然后获取hibernateTemplate,HibernateTemplate封装了session的操作,user =(User)template.get(User.class,id);查找User对象,查找后在通过template在把这个对象删除掉。现在不用管session,因为我们用到spring,我们注射进来了,所以session关闭交给spring。
3.修改web.xml文件
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /*
注意:url请求过来首先找web.xml,通过过滤器进行拦截,找对应的action。
4.接着编写web.xml
org.springframework.web.context.ContextLoaderListener
注意:监听器是spring,其实就是struts不管事务了,交给spring进行管理,对象交给spring进行管理。
5.web.xml架构
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* org.springframework.web.context.ContextLoaderListener
编写struts.xml文件
/list.jsp /error.jsp
注意name可以随便写,真正的寻找action类交给了spring,所以class=“”是spring的id=“”。他会继续到spring中找。
applicationContext.xml
注意:spring的id一定是struts的class =“”,然后spring的class=“”会告诉这个action类在哪里?jurisdiction 另外
action编写:
package com.s2sh.action.user; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.s2sh.mobel.User; import com.s2sh.service.UserService; public class UserAction extends ActionSupport { private static final long serialVersionUID = -7467352669343037994L; private User user; private UserService userService; public static long getSerialversionuid() { return serialVersionUID; } public UserService getUserService() { return userService; } private String name; private String password; public void setUserService(UserService userService) { this.userService = userService; } public User getUser() { return user; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void setUser(User user) { this.user = user; } public String login()throws Exception{ System.out.println(user.getName()); if(null!=this.userService.findUser(user)){ return SUCCESS; }else { return ERROR; } }
dao接口编写
package com.s2sh.dao; import java.util.List; import com.s2sh.mobel.User; public interface UserDao { //根据用户用户来登录,不过你可以根据自己需求来写 public User findUser(User user); }
dao接口实现类
package com.s2sh.dao.impl; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.s2sh.dao.UserDao; import com.s2sh.mobel.User; public class UserDaoImpl extends HibernateDaoSupport implements UserDao{ //用户登录 public User findUser(User user) { try{ String hql="from User where name=? and password=?"; List list = (List) this.getHibernateTemplate().find(hql,new String[]{user.getName(),user.getPassword()}); if(list.size()>=1){ return (User)list.get(0); }else { return null; } }catch (Exception e) { e.printStackTrace(); } return null; } }
编写servce接口
package com.s2sh.service; import java.util.List; import com.s2sh.mobel.User; public interface UserService { //根据user登录 public User findUser(User user); }
编写servce实现类
package com.s2sh.service.impl; import java.util.List; import com.s2sh.dao.UserDao; import com.s2sh.mobel.User; import com.s2sh.service.UserService; public class UserServiceImpl implements UserService{ private UserDao userDao; //注入 public void setUserDao(UserDao userDao) { this.userDao = userDao; } //用户登录 public User findUser(User user){ return (User)this.userDao.findUser(user); } }
编写jsp名为login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %>用户登录
失败页面 error.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %>Insert title here ------------------>程序失败<--------------------------------
注意:如果有什么需要帮助的可以加我QQ503229799 备注:s2sh寻求帮助,我会同意添加好友,另外我有QQ开发群,看我的首页,在群里喊我也行!这只是简单的登录,如果想要整个模块的增删改查的代码,请在本片评价上留言!我会给你们整合一个完整的代码,包括jar包上传····数据库设计····另外加注释·····
接下来咱们开始演示吧~~~~
url输入地址:http://localhost:8088/s2sh/login.jsp