谁知道struts2做增删改查的详细步骤。
那要看你使用了那些框架咯,一般来说分为三层
第一层是表层:就是action那部分,响应jsp操作
第二层是service层:就是进行逻辑操作的。
第三层是持久层(DAO):就是进行数据库操作的
比如,增加一个留言(Message)的操作。在action层中将这个Message封装好,重写excute()方法。
调用Service层的方法,进行一些逻辑性的操作,最后到持久层DAO将这个Message对象加入数据库。
我有一个SSH的代码可以看下。 (只贴出了代码,还有一些配置文件省略了)
action:
public class AddMessage extends ActionSupport {
private String content;
private String username;
private String visior;
private MessageService messageService;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
。。。。。//还有其他的set() get()方法省略
@Override
public String execute() throws Exception {
Map session = ActionContext.getContext().getSession();
HttpServletRequest request = ServletActionContext.getRequest();
String username = (String) session.get("username");
String visitor = (String)session.get("visitor");
if (null == username || "".equals(username)) {
return ERROR;
} else {
// 封装Message
Message message = new Message();
message.setUsername(username);
message.setContent(content);
if(visitor == null){
message.setVisitor("游客");
}else{
message.setVisitor(visitor);
}
message.setDate(new Date());
messageService.addMessage(message); //这里调用Service层的方法
return this.SUCCESS;
}
}
}
service层:
接口:
public interface MessageService {
//添加留言
public void addMessage(Message message);
//删除留言
public void deleteMessage(int id);
//分页查询留言
public Result showUserMessageByPage(String username,Page page);
}
实现类:
public class MessageServiceImpl implements MessageService {
private MessageDAO messageDAO;
public MessageDAO getMessageDAO() {
return messageDAO;
}
public void setMessageDAO(MessageDAO messageDAO) {
this.messageDAO = messageDAO;
}
//刚刚调用的service方法
public void addMessage(Message message) {
messageDAO.add(message);//这里调用了DAO层的方法,将数据保存到数据库
}
public void deleteMessage(int id) {
messageDAO.deleteMessage(id);
}
public Result showUserMessageByPage(String username, Page page) {
page = PageUtil.createPage(page,messageDAO.queryUserAllCount(username));
List<Message> all = messageDAO.queryByPage(username, page);
Result result = new Result();
result.setPage(page);
result.setList(all);
return result;
}
}
DAO层:
(接口)
public interface MessageDAO {
//添加留言
public void add(Message message);
//删除留言
public boolean deleteMessage(int id);
//查询某个用会员的全部留言
public List<Message> queryByPage(String username,Page page);
//按照ID俩查询留言
public Message queryById(int id);
//查询数据库中某用户所有留言数目
public int queryUserAllCount(String username);
//获取所访问的用户ID
public int UserID();
}
(实现类)
public class MessageDAOImpl extends HibernateDaoSupport implements MessageDAO {
//这里是刚刚调用的add方法
public void add(Message message) {
this.getHibernateTemplate().save(message);//这里就把message存入数据库中了
}
public boolean deleteMessage(int id) {
this.getHibernateTemplate().delete(this.queryById(id));
return false;
}
public Message queryById(int id) {
List<Message> find = this.getHibernateTemplate().find("select meg from Message meg where meg.id = ?", id);
return (Message) find.get(0);
}
public List<Message> queryByPage(final String username,final Page page) {
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery("select meg from Message meg where meg.username = ? order by meg.date desc");
//设置查询的用户
query.setParameter(0, username);
//设置查询的最大数
query.setMaxResults(page.getEveryPage());
//设置从哪里开始查询
query.setFirstResult(page.getBeginIndex());
return query.list();
}
});
}
public int queryUserAllCount(String username) {
List find = this.getHibernateTemplate().find("select count(*) from Message meg where meg.username = ?",username);
return ((Long)find.get(0)).intValue();
}
public int UserID() {
// TODO Auto-generated method stub
return 0;
}
}
其他的操作类似
2023-08-29 广告
如果你费用struts,那么只能用jdbc了。
这个时候你需要学习jdbc和dao模式(可选)来完成仅有struts的增删改查。其实你这样的需求用个servlet也ok。
先学jdbc和dao吧。我也不太明白你的需求,有问题再追问吧。
嗯,谢了。