SSH03---实现用户管理组功能
程序员文章站
2022-04-26 10:00:42
...
1、显示组信息
/**
* 展示所有组信息
*/
public String list() {
//将gl放在ActionContext
ActionContext.getContext().put("gl", groupService.listAllGroup());
return SUCCESS;
}
list.jsp
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>用户组展示</title>
</head>
<body>
<!--使用ActionContext.getContext().put("gl", groupService.listAllGroup()); 将gl放到了ActionContext中, 所需要使用#gl获取
<s:iterator value="#gl">
${id}---><a href="group_show.action?gid=${id}">${groupName }</a>
<a href="group_delete.action?id=${id}">删除</a>
<a href="group_updateInput.action?id=${id}">更新</a><br>
</s:iterator>
<s:debug></s:debug>
</body>
</html>
结果实现所有组信息
2、显示某个组的信息
/**
*当点击一个组,查看组内信息
*/
public String show() {
//接收组id,
System.out.println(gid);
group = groupService.load(gid);
System.out.println(group);
return SUCCESS;
}
/SSH01_struts2/WebContent/WEB-INF/jsp/group/show.jsp
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>组信息展示</title>
</head>
<body>
${group.id}--->${group.groupName}
<s:debug></s:debug>
</body>
</html>
3、删除组
list.jsp中
<a href="group_delete.action?id=${id}">删除</a>
删除之后, 跳转到list界面
/**
* 删除组操作
* @return
*/
public String delete() {
groupService.delete(group.getId());
//设置跳转的url
ActionContext.getContext().put("url", "/group_list.action");
//删除时候重新调到展示, 客户端跳转
return "redirect";
}
4、修改组信息
##通过 ?id=${id},将id的值传递
<a href="group_updateInput.action?id=${id}">更新</a><br>
updateInput()
/**
*list界面 点击更新,跳到更新输入界面
* @return
*/
public String updateInput() {
Group tg = groupService.load(group.getId());
//System.out.println(tg);
//不可以使用group=tg, 将获取的是一个新的对象
//将值传递到update.jsp
group.setGroupName(tg.getGroupName());
return SUCCESS;
}
通过<s:hidden name=id>
向update.jsp传递值
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>更新组</title>
</head>
<body>
<s:form action="group_update" method="post">
<s:hidden name="id"/>
<s:textfield label="组名称" name="groupName"/>
<s:submit value="提交更新" />
</s:form>
<s:debug></s:debug>
</body>
</html>
update()
/**
* 更新操作
* @return
*/
public String update() {
//获取数据中的数据
Group tg = groupService.load(group.getId());
//更新名字
tg.setGroupName(group.getGroupName());
//更新组
groupService.updae(tg);
ActionContext.getContext().put("url", "/group_list.action");
//删除时候重新调到展示, 客户端跳转
return "redirect";
}
5、添加组
/**
*添加输入
* @return
*/
public String addInput() {
return SUCCESS;
}
/**
* 添加组
*/
public String add() {
groupService.add(group);
ActionContext.getContext().put("url", "/group_list.action");
return "redirect";
}
如果添加空白信息
这个需要我们做一个判断, 不要添加空信息, 需要在GroupAction中添加一个判断方法
/**
* 服务器端验证add的方法
*/
public void validateAdd() {
if(group.getGroupName()==null||"".equals(group.getGroupName().trim())) {
this.addFieldError("name","组名称不能为空");
}
}
单例问题
重新打开一个界面http://localhost:8080/SSH01_struts2/group_addInput.action
, 为什么去找addInputInput.jsp
输入http://localhost:8080/SSH01_struts2/group_delete.action
也一样
错误一直存在, 而且GroupAction是单例, 所以所有的界面都存在这个问题。
所以也证明了GroupAction必须使用多例@Scope("prototype")
@Controller(value="groupAction")
//@Scope("prototype")