今天主要讲的是struts2hibernate相结合的用户的增删改查,主要应用了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>如果没有指定resultname属性,默认值为success

 

 

 

Struts2中结果集类型

 

 

1、 每个action方法都返回一个String类型的值,struts一次请求返回什么值是由这个值确定的。

2、 在配置文件中,每一个action元素的配置都必须有result元素,每一个result对应一个action的返回值。

3、 Result有两个属性:

name:结果的名字,和action中的返回值一样,默认值为success;

type:响应结果类型,默认值为dispatcher.

 

 

 

 

在下面找到struts-default.xml文件中,如下面所示:

structs2初学之与hibernate结合之增删改查_struts2

 

 

说明:

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的内容,就暂且不写了,内容太多。。达到的效果如下:

登陆窗口

structs2初学之与hibernate结合之增删改查_hibernate_02

登陆成功:

structs2初学之与hibernate结合之增删改查_hibernate_03

查看所有:

structs2初学之与hibernate结合之增删改查_hibernate_04

更新:

structs2初学之与hibernate结合之增删改查_hibernate_05

 

查看详情:

structs2初学之与hibernate结合之增删改查_struts2_06