Struts2+Spring+Hibernate整合的例子

来源:互联网 发布:excel会计记账软件 编辑:程序博客网 时间:2024/06/07 03:14

最近学习了Struts2,Spring,Hibernate的内容。并做了一个简单的消息发送的例子,因为系统很小,所以也不好意思叫系统。虽然例子简单,但SSH整合的基本内容都包含了。就记录下来,方便以后查阅。

这个是系统的基本需求。

用户能够发送消息(多选用户进行群发),查看自己的收件箱(其实是看自己接收到的消息),查看发件箱(查看发送消息记录)。用户进行分组,每个分组也可以包含多个子分组。例子中只把分组的实体建立了,并未实现与分组相关的功能。

1.系统开始前最关键的也是最难的就是概念模型的设计。


用户与消息之间有两个关系,一个是发送消息,另一个是接收消息。其中发送消息用户与消息之间发送消息关系是一对多,用户与消息之间的接收消息关系多对多,在进行概念模型设计是我们一般将多对对关系拆分为两个多对一。图中的概念模型就是就是将多对对关联拆分为两个多对一关联之后的结果。拆分后还可以在抽象出来的类中加入一些字段,图中的ReceiveMessage就是抽象出来的类,在这个类中又加入了一个receiveTime字段。

用户与分组之间的关系是多对一关联,由于分组是一个树形结构,每个分组有一个父节点,每个分组又有若干子节点,所以父分组与自分组之间是一对多关联。

将概念模型建立之后我们就可以在Hibernate映射表中建立相应的关联映射了。

2.根据概念模型建立各个实体类。

package com.lql.model;import java.util.Set;//用户public class ContactPerson {private int id;private String name;private String password;private Group group;private Set<Message> sendMsgs;//已发送消息private Set<ReceiverMessage> receiveMsgs;//接收到的消息public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Set<Message> getSendMsgs() {return sendMsgs;}public void setSendMsgs(Set<Message> sendMsgs) {this.sendMsgs = sendMsgs;}public Set<ReceiverMessage> getReceiveMsgs() {return receiveMsgs;}public void setReceiveMsgs(Set<ReceiverMessage> receiveMsgs) {this.receiveMsgs = receiveMsgs;}public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

package com.lql.model;import java.util.HashSet;import java.util.Set;public class Group {private int id;private String name;private Group parent;private Set<Group> sons;private Set<ContactPerson> persons;public Set<Group> getSons() {return sons;}public void setSons(Set<Group> sons) {this.sons = sons;}public Group getParent() {return parent;}public void setParent(Group parent) {this.parent = parent;}public void addPerson(ContactPerson person) {if (persons == null) {persons = new HashSet<ContactPerson>();}persons.add(person);}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<ContactPerson> getPersons() {return persons;}public void setPersons(Set<ContactPerson> persons) {this.persons = persons;}}

package com.lql.model;import java.util.Set;public class Message {private int id;private String title;private String content;private ContactPerson sender;private Set<ReceiverMessage> receivers;//消息的接收者集合public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public ContactPerson getSender() {return sender;}public void setSender(ContactPerson sender) {this.sender = sender;}public Set<ReceiverMessage> getReceivers() {return receivers;}public void setReceivers(Set<ReceiverMessage> receivers) {this.receivers = receivers;}}

package com.lql.model;import java.util.Date;public class ReceiverMessage {private int id;private ContactPerson receiver;private Message msg;private Date receiveTime;public int getId() {return id;}public void setId(int id) {this.id = id;}public ContactPerson getReceiver() {return receiver;}public void setReceiver(ContactPerson receiver) {this.receiver = receiver;}public Message getMsg() {return msg;}public void setMsg(Message msg) {this.msg = msg;}public Date getReceiveTime() {return receiveTime;}public void setReceiveTime(Date receiveTime) {this.receiveTime = receiveTime;}}

上述实体类是根据概念模型建立的。接下来就是Hibernate关联映射表的建立。

3.关联映射文件的建立。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--ContactPerson 映射文件 --><hibernate-mapping package="com.lql.model"><class name="ContactPerson" table="tb_person" lazy="true"><comment>Users may bid for or sell auction items.</comment><id name="id"><generator class="native"/></id><property name="name" unique="true" not-null="true"/><property name="password"></property><!-- 用户与所属分组是多对一 --><many-to-one name="group" column="groupId"></many-to-one><!-- lazy="extra"是懒加载方式,inverse="true"表示在一的一段维护关联关系 --><set name="sendMsgs" lazy="extra" inverse="true"><key column="senderId"></key><one-to-many class="com.lql.model.Message"/></set><set name="receiveMsgs" lazy="extra" inverse="true"><key column="receiverId"></key><one-to-many class="com.lql.model.ReceiverMessage"/></set></class></hibernate-mapping>

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Group映射文件 --><hibernate-mapping package="com.lql.model"><class name="Group" table="tb_group"><comment>Users may bid for or sell auction items.</comment><id name="id"><generator class="native" /></id><property name="name"></property><!--多对一联系,集合名为Group中persons key是在多的那张表里加一个字段groupid 在双向关联的中如果在某一方的关联配置中指定inverse=”true” ,那么本方就不能维护两者之间的关联关系。关联关系就由对方一方来维护。Inverse默认是false,双方都可以维护关联关系。维护关联关系的意思是可以再本方的对象中保存对方的引用。extra:一种比较聪明的懒加载策略,即调用集合的size/contains等方法的时候,hibernate并不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据--><set name="persons" lazy="extra" inverse="true"><key column="groupId"></key><!-- key表示在多的那张表里加一个字段指向本表 --><one-to-many class="com.lql.model.ContactPerson" /></set><many-to-one name="parent" column="pid"></many-to-one><set name="sons" lazy="extra" inverse="true"><key column="pid"></key><one-to-many class="com.lql.model.Group" /></set></class></hibernate-mapping>

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--Message 映射文件 --><hibernate-mapping package="com.lql.model"><class name="Message" table="tb_message" lazy="true"><comment>Users may bid for or sell auction items.</comment><id name="id"><generator class="native"/></id><property name="title"></property><property name="content"></property><many-to-one name="sender" column="senderId"></many-to-one><set name="receivers" lazy="extra" inverse="true"><key column="msgId"/><one-to-many class="com.lql.model.ReceiverMessage"/></set></class></hibernate-mapping>

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--ReceiverMessage 映射文件 --><hibernate-mapping package="com.lql.model"><class name="ReceiverMessage" table="tb_receivermsg" lazy="true"><comment>Users may bid for or sell auction items.</comment><id name="id"><generator class="native" /></id><many-to-one name="receiver" column="receiverId"></many-to-one><many-to-one name="msg" column="msgId"></many-to-one><property name="receiveTime"></property></class></hibernate-mapping>
映射文件建立完毕。将Spring配置文件贴出,Spring配置文件中包括数据源的配置,Spring事务管理配置,以及Hibernate映射文件的配置。

4.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" xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/aop        http://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 允许使用注解进行注入 --><context:annotation-config /><!-- 允许Spring扫描类路径的类,将符合条件的的类,注入Spring中 --><context:component-scan base-package="com.lql.*" /><!-- Spring配置文件中配置数据源 --><bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost/ssh_msg" /><property name="username" value="root" /><property name="password" value="123456" /></bean><!-- 配置数据源后配置SessionFactory property配置hibernate配置文件中的一些配置项--><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="myDataSource" /><property name="hibernateProperties"><value>hibernate.dialect=org.hibernate.dialect.MySQLDialecthibernate.hbm2ddl.auto=updatehibernate.show_sql=true</value></property><!-- Hibernate映射文件 --><property name="mappingResources"><list><value>com/lql/model/ContactPerson.hbm.xml</value><value>com/lql/model/Group.hbm.xml</value><value>com/lql/model/Message.hbm.xml</value><value>com/lql/model/ReceiverMessage.hbm.xml</value></list></property></bean><!--配置Hibernate事务管理器 Spring集成Hibernate时,通常将Hibernate中的事务管理交给Spring来统一进行。Dao只需进行自己的CRUD操作,不必关心事务管理的问题。--><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 配置哪些方法的调用需要增加事务管理器 --><aop:config><aop:pointcut id="allServiceMethods" expression="execution(* com.lql.service.*.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="allServiceMethods" /></aop:config><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 对于增加,删除,修改的方法,都需要事务管理 --><tx:method name="add*" propagation="REQUIRED" /><tx:method name="send*" propagation="REQUIRED" /><tx:method name="get*" propagation="REQUIRED" read-only="true" /><tx:method name="is*" propagation="REQUIRED" read-only="true" /></tx:attributes></tx:advice><!--  <bean id="personDao" class="com.lql.dao.imp.PersonDaoImp"><property name="sessionFactory" ref="sessionFactory"></property></bean><bean id="messageDao" class="com.lql.dao.imp.MessageDaoImp"><property name="sessionFactory" ref="sessionFactory"></property></bean><bean id="personService" class="com.lql.service.imp.PersonServiceImp"><property name="personDao" ref="personDao"></property></bean><bean id="messageService" class="com.lql.service.imp.MessageServiceImp"><property name="messageDao" ref="messageDao"></property><property name="personDao" ref="personDao"></property></bean>--></beans>
数据库采用的是Mysql,在mysql数据库下建一个名为ssh_msg的数据库。表不用自己建,只要我们正确配置了Hibernate映射表和Spring配置文件,表就能给我们正确建立出来。


5.定义Dao和Service接口。

package com.lql.dao;import java.util.List;import com.lql.model.Message;import com.lql.model.ReceiverMessage;public interface MessageDao {/** * 保存一条消息 */public void saveMessage(Message message);/** * 保存一条ReceiverMessage * @param receiverMessage */public void saveReceiveMessage(ReceiverMessage receiverMessage);/** * 根据用户名查询用户收到的消息 * @param id * @return */public List<Message> queryReceiveMsgs(int id);/** * 获取该用户发送的消息列表 * @param id * @return */public List<Message> querySendMsgs(int id);}
package com.lql.dao;import java.util.List;import com.lql.model.ContactPerson;import com.lql.model.Message;public interface PersonDao {/** * 保存一个Person * @param person */public void save(ContactPerson person);/** * 根据名字查询Person * @param name * @return */public ContactPerson queryPersonByName(String name);/** *  根据用户ID获取不包含不包含该用户的用户列表 * @param name * @return */public List<ContactPerson> queryPersonsExceptId(int id);/** * 根据ID查用户 * @param id * @return */public ContactPerson queryPersonById(int id);}

package com.lql.service;import java.util.List;import com.lql.model.Message;public interface MessageService {/** *  * @param title:消息标题 * @param content:消息内容 * @param receiveIds:接收消息人ID列表 * @param senderId:消息发送者的ID */public boolean sendMessage(String title,String content,List<Integer> receiveIds,int senderId);/** * 获取用户收件箱的消息 * @param id */public List<Message> getReceiveMsgsById(int userId);/** * 获取用户发件箱消息 */public List<Message> getSendMsgsById(int userId); }

package com.lql.service;import java.util.List;import com.lql.model.ContactPerson;import com.lql.model.Message;public interface PersonService {/** * 根据用户名和密码判断用户能否登陆 * @param name * @param pwd * @return true:表示允许此用户登陆 * false:不允许此用户登陆 */public boolean isLogin(String name ,String pwd);/** * 取出除了当前登陆用户之外的全部用户 * @param id * @return */public List<ContactPerson> getAllPersonsExceptId(int id);/** * 增加一个用户 * @param person * @return */public boolean addPerson(ContactPerson person);/** *  * @param id * @return */public ContactPerson getPersonById(int id);}
接口是一种规范,在编码之前我们应该先理一理请求的过程,把需要的接口先抽象出来,然后把所需接口定义出来,按照接口规范将所需的接口实现出来。

5.接口实现。

package com.lql.dao.imp;import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Repository;import com.lql.dao.MessageDao;import com.lql.model.Message;import com.lql.model.ReceiverMessage;@Repository("messageDao")//注解注入public class MessageDaoImp implements MessageDao{@Resource    private SessionFactory sessionFactory;//注解注入public List<Message> queryReceiveMsgs(int id) {// TODO Auto-generated method stub/** * 连接查询,查询用户接收的消息集合,tb_receive表中保存着用户id与接收消息id之间的映射关系, * 想要查询根据用户id查找该用户接收的消息,应将三张表联合起来查询 */Session session = getSession();String hql = "select m from ReceiverMessage rm join rm.receiver r join rm.msg m where r.id = ?";Query query = session.createQuery(hql);query.setParameter(0, id);List<Message> receiverMsgs = query.list();return receiverMsgs;}public List<Message> querySendMsgs(int id) {// TODO Auto-generated method stubSession session = getSession();//String hql = "select m from Message m where m.sender.id = ?";//不使用连接String hql = "select m from Message m join m.sender s where s.id = ?";//使用连接Query query = session.createQuery(hql);query.setParameter(0, id);List<Message> sendMsgs = query.list();return sendMsgs;}public void saveMessage(Message message) {// TODO Auto-generated method stubgetSession().save(message);}public void saveReceiveMessage(ReceiverMessage receiverMessage) {// TODO Auto-generated method stubgetSession().save(receiverMessage);}private Session getSession(){return sessionFactory.getCurrentSession();}}

package com.lql.dao.imp;import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Repository;import com.lql.dao.PersonDao;import com.lql.model.ContactPerson;@Repository("personDao")public class PersonDaoImp implements PersonDao {@Resourceprivate SessionFactory sessionFactory;private Session getSession(){return sessionFactory.getCurrentSession();}public ContactPerson queryPersonById(int id) {// TODO Auto-generated method stubSession session = getSession();String hql = "select cp from ContactPerson cp where cp.id = ?";Query query = session.createQuery(hql);query.setParameter(0, id);ContactPerson person =(ContactPerson) query.uniqueResult();return person;}public ContactPerson queryPersonByName(String name) {// TODO Auto-generated method stubSession session = getSession();String hql = "select cp from ContactPerson cp where cp.name = ?";Query query = session.createQuery(hql);query.setParameter(0, name);ContactPerson person =(ContactPerson) query.uniqueResult();return person;}public List<ContactPerson> queryPersonsExceptId(int id) {// TODO Auto-generated method stubSession session = getSession();String hql = "select cp from ContactPerson cp where cp.id not in ("+id+")";Query query = session.createQuery(hql);List<ContactPerson> persons = query.list();return persons;}public void save(ContactPerson person) {// TODO Auto-generated method stubgetSession().save(person);}}

package com.lql.service.imp;import java.util.Date;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.lql.dao.MessageDao;import com.lql.dao.PersonDao;import com.lql.model.ContactPerson;import com.lql.model.Message;import com.lql.model.ReceiverMessage;import com.lql.service.MessageService;@Service("messageService")public class MessageServiceImp implements MessageService {@Resourceprivate MessageDao messageDao;@Resourceprivate PersonDao personDao;public void setMessageDao(MessageDao messageDao) {this.messageDao = messageDao;}public void setPersonDao(PersonDao personDao) {this.personDao = personDao;}public List<Message> getReceiveMsgsById(int userId) {// TODO Auto-generated method stubList<Message> receiveMsgs = messageDao.queryReceiveMsgs(userId);return receiveMsgs;}public List<Message> getSendMsgsById(int userId) {// TODO Auto-generated method stubList<Message> sendMsgs = messageDao.querySendMsgs(userId);return sendMsgs;}public boolean sendMessage(String title, String content,List<Integer> receiveIds, int senderId) {ContactPerson sender = personDao.queryPersonById(senderId);if (sender == null) {return false;}Message message = new Message();message.setTitle(title);message.setContent(content);message.setSender(sender);messageDao.saveMessage(message);for (Integer receiverId : receiveIds) {ReceiverMessage receiverMessage = new ReceiverMessage();receiverMessage.setMsg(message);receiverMessage.setReceiver(personDao.queryPersonById(receiverId));receiverMessage.setReceiveTime(new Date());messageDao.saveReceiveMessage(receiverMessage);}return true;}}

package com.lql.service.imp;import java.util.List;import javax.annotation.Resource;import javax.servlet.http.HttpSession;import org.springframework.stereotype.Service;import com.lql.dao.PersonDao;import com.lql.model.ContactPerson;import com.lql.service.PersonService;import com.opensymphony.xwork2.ActionContext;@Service("personService")public class PersonServiceImp implements PersonService {@Resourceprivate PersonDao personDao;public void setPersonDao(PersonDao personDao) {this.personDao = personDao;}public List<ContactPerson> getAllPersonsExceptId(int id) {// TODO Auto-generated method stubList<ContactPerson> persons = personDao.queryPersonsExceptId(id);return persons;}public boolean isLogin(String name, String pwd) {// TODO Auto-generated method stubContactPerson person = personDao.queryPersonByName(name);if (person == null) {return false;} else if (!person.getPassword().equals(pwd)) {return false;}ActionContext.getContext().getSession().put("user", person);return true;}public boolean addPerson(ContactPerson person) {// TODO Auto-generated method stubpersonDao.save(person);return true;}public ContactPerson getPersonById(int id) {// TODO Auto-generated method stubContactPerson person = personDao.queryPersonById(id);return person;}}
以上是与呈现层无关的Spring+hibernate的实现过程。下面就是Sturts2部分。

6.struts.xml配置文件

<?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><constant name="struts.action.extension" value="action,do"></constant><constant name="struts.configuration.xml.reload" value="true"></constant><constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant><package name="login" namespace="/login" extends="struts-default"><action name="isLogin" class="loginAction"><result name="suceess">/main.jsp</result><result name="fail">/index.jsp</result></action></package><package name="message" namespace="/message" extends="struts-default"><action name="msg_receive" method="scanReceiveMsgs" class="messageAction"><result name="receive_msgs">/receive_msgs.jsp</result></action><action name="msg_sended" method="scanSendedMsgs" class="messageAction"><result name="sended_msgs">/sended_msgs.jsp</result></action><action name="msg_go_send" method="goSendMsgs" class="messageAction"><result name="go_send_msg">/send_msg.jsp</result></action><action name="msg_send" method="sendMsg" class="messageAction"><result name="success">/send_msg.jsp</result><result name="fail">/send_msg.jsp</result></action></package></struts>
在访问某个action下的方法时,可以这样提交参数:包名/action名.action,比如message/msg_sended.action,就表示将请求交由messageAction来处理。

web.xml配置文件,配置struts2.xml请求分发过滤器,以及Spring的监听器。

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><!--ContextLoaderListener会在应用服务器启动的时候自动初始化在这个Listener初始化的时候,他会读取contextConfigLocation的值并根据它创建BeanFactory对象,并把这个对象放入ServletContext中 beanFactory被创建后会,Spring会自动实例化在beans.xml中注册的所有类当然也包括注册的SessionFactory,实例化SessionFactory的时候数据库表也会被自动创建 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 在Service方法执行后,Session会自动关闭,如果我们使用懒加载时,有时会出现懒加载异常这时我们可以在web.xml中加上这个过滤器,就会将这种情况避免 在没有加这个OpenSessionInViewFilter时,session是在Service方法执行前进行创建,并在service方法执行后关闭,如果加上这个filter,在经过这个filter后就是创建session,直到将视图呈现到浏览器前才关闭该session--><filter><filter-name>openSessionInView</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>openSessionInView</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- struts2过滤器 --><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

7.Strut2的Action

package com.lql.action;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.lql.service.PersonService;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;@Controller("loginAction")@Scope("prototype")public class LoginAction {private String name;private String password;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Resourceprivate PersonService personService;public String execute(){if(!personService.isLogin(name, password)){ActionContext.getContext().put("message", "用户名或密码有误");return "fail";}return "suceess";}}

package com.lql.action;import java.util.ArrayList;import java.util.List;import javax.annotation.Resource;import org.apache.struts2.ServletActionContext;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.lql.model.ContactPerson;import com.lql.model.Message;import com.lql.service.MessageService;import com.lql.service.PersonService;import com.opensymphony.xwork2.ActionContext;@Controller("messageAction")@Scope("prototype")public class MessageAction {private String title;private String content;@Resourceprivate PersonService personService;@Resourceprivate MessageService messageService;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String scanReceiveMsgs() {ContactPerson loginUser = getLoginUser();System.out.println(loginUser.getName());List<Message> receiveMsgs = messageService.getReceiveMsgsById(loginUser.getId());ActionContext.getContext().put("receiveMsgs", receiveMsgs);return "receive_msgs";}public String scanSendedMsgs() {ContactPerson loginUser = getLoginUser();List<Message> sendedMsgss = messageService.getSendMsgsById(loginUser.getId());ActionContext.getContext().put("sendedMsgss", sendedMsgss);return "sended_msgs";}public String goSendMsgs() {ContactPerson loginUser = getLoginUser();List<ContactPerson> users = personService.getAllPersonsExceptId(loginUser.getId());ActionContext.getContext().put("users", users);return "go_send_msg";}public String sendMsg() {String[] ids = ServletActionContext.getRequest().getParameterValues("receiver_id");List<Integer> receiver_ids = new ArrayList<Integer>();for(String id:ids){System.out.println(id);receiver_ids.add(Integer.parseInt(id));}ContactPerson loginUser = getLoginUser();messageService.sendMessage(title, content, receiver_ids, loginUser.getId());List<ContactPerson> users = personService.getAllPersonsExceptId(loginUser.getId());ActionContext.getContext().put("users", users);ActionContext.getContext().put("message", "发送成功");return "success";} private ContactPerson getLoginUser(){ContactPerson loginUser = (ContactPerson) ActionContext.getContext().getSession().get("user");return loginUser;}}

基本上差不多了,还有Jsp页面不贴出了,将项目连接贴出,需要的可以参考一下。点击打开链接



0 0
原创粉丝点击