今天主要讲的是struts2与hibernate相结合的用户的增删改查,主要应用了struts2的基本应用,复习了hibernate的基本方法;
关于struts2的运行方式
客户端----->web容器--->web.xml-->struts2过滤器--->struts.xml--->Action--->model--->数据库
<------------------------------------------------------------------------------------|
Action 要想把数据 传递给jsp
首先创建一个私有的变量:
private String username;
利用get方法
public String getUsername(){return username;}
通过什么方式传递
<result
type="dispatcher" name="success">/manager/index.jsp</result>
在jsp页面中使用$符号
Jsp =---〉 ${username}
<package name="csdn" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.csdn.action.HelloWorldAction" method="execute" >
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
1>如果没有为action指定class,默认是ActionSupport。
2>如果没有为action指定method,默认执行action中的execute() 方法。
3>如果没有指定result的name属性,默认值为success。
Struts2中结果集类型
1、 每个action方法都返回一个String类型的值,struts一次请求返回什么值是由这个值确定的。
2、 在配置文件中,每一个action元素的配置都必须有result元素,每一个result对应一个action的返回值。
3、 Result有两个属性:
name:结果的名字,和action中的返回值一样,默认值为success;
type:响应结果类型,默认值为dispatcher.
在下面找到struts-default.xml文件中,如下面所示:
说明:
1、 从上述可以看出总共10种类型
2、 默认类型为ServletDispatcherResult即转发。
3、 结果类型可以是这10种结果类型的任意一种。
<action name="helloworld" class="cn.csdn.action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
result配置类似于struts1中的forward,但struts2中提供了多种结果类型,常用的类型有: dispatcher(默认值)、 redirect 、 redirectAction 、 plainText。
下面是redirectAction 结果类型的例子,如果重定向的action中同一个包下:
<result type="redirectAction">helloworld</result>
如果重定向的action在别的命名空间下:
<result type="redirectAction">
<param name="actionName">helloworld</param>
<param name="namespace">/test</param>
</result>
plaintext:显示原始文件内容,例如:当我们需要原样显示jsp文件源代码 的时候,我们可以使用此类型。
<result name="source" type="plainText ">
<param name="location">/xxx.jsp</param>
<param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
</result>
在result中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性。如下:
<result type="redirect">view.jsp?id=${id}</result>
struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="struts-admin.xml"/>
</struts>
struts-admin.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="admin" namespace="/hbsi" extends="struts-default">
<action name="adminLogin" class="www.hbsi.StrutsProject.action.AdminAction"
method="login">
<result name="success">/manager/sc.jsp</result>
<result name="login">/index.jsp</result>
</action>
<action name="insertObject" class="www.hbsi.StrutsProject.action.AdminAction"
method="insert">
<result name="success" type="redirectAction">
<param name="actionName">getAll.action</param>
</result>
</action>
<action name="getAll" class="www.hbsi.StrutsProject.action.AdminAction"
method="getAll">
<result name="success">/manager/getAll.jsp</result>
</action>
<action name="getObject" class="www.hbsi.StrutsProject.action.AdminAction"
method="getObject">
<result name="success">/manager/getObject.jsp</result>
</action>
<action name="deleteObject" class="www.hbsi.StrutsProject.action.AdminAction"
method="deleteObject">
<result name="success" type="redirectAction">
<param name="actionName">getAll.action</param>
</result>
</action>
<action name="findObject" class="www.hbsi.StrutsProject.action.AdminAction"
method="findObject">
<result name="success">
/manager/update.jsp
</result>
</action>
<action name="updateObject" class="www.hbsi.StrutsProject.action.AdminAction"
method="updateObject">
<result name="success" type="redirectAction">
<param name="actionName">getAll.action</param>
</result>
</action>
</package>
</struts>
AdminAction类
public class AdminAction extends ActionSupport {
private String adminEmail;
private String adminName;
private String adminPass;
private Admin entity;
private List<Admin> entitys;
private Integer id;
AdminService adminService = new AdminServiceImpl();
public void setId(Integer id) {
this.id = id;
}
public List<Admin> getEntitys() {
return entitys;
}
public void setEntitys(List<Admin> entitys) {
this.entitys = entitys;
}
public Admin getEntity() {
return entity;
}
public AdminService getAdminService() {
return adminService;
}
public void setAdminService(AdminService adminService) {
this.adminService = adminService;
}
public String getAdminName() {
return adminName;
}
public String getAdminPass() {
return adminPass;
}
public Integer getId() {
return id;
}
public void setEntity(Admin entity) {
this.entity = entity;
}
}
public void setAdminName(String adminName) {
this.adminName = adminName;
}
public void setAdminPass(String adminPass) {
this.adminPass = adminPass;
}
public String getAdminEmail() {
return adminEmail;
}
public void setAdminEmail(String adminEmail) {
this.adminEmail = adminEmail;
}
public String login() {
entity = adminService.login(adminName, adminPass);
if(entity!=null){
return SUCCESS;
}else{
return LOGIN;
}
}
public String insert(){
entity = new Admin(adminName,adminPass,adminEmail);
adminService.saveObject(entity);
return SUCCESS;
}
public String getAll(){
entitys = adminService.getAllObjects(Admin.class);
return SUCCESS;
}
public String getObject(){
entity = adminService.getObjectById(Admin.class, id);
return SUCCESS;
}
public String deleteObject(){
adminService.deleteObjectById(id);
return SUCCESS;
}
public String findObject(){
entity = adminService.getObjectById(Admin.class, id);
return SUCCESS;
}
public String updateObject(){
entity = adminService.getObjectById(Admin.class, id);
entity.setAdminEmail(adminEmail);
entity.setAdminName(adminName);
adminService.updateObject(entity);
return SUCCESS;
}
剩下的基本上都是hibernate的内容,就暂且不写了,内容太多。。达到的效果如下:
登陆窗口
登陆成功:
查看所有:
更新:
查看详情: