Struts+Spring+Hibernate練習(完整)的續(xù)集錄像教程
速動畫教程第十五集
本集為第十二集Struts+Spring+Hibernate練習(完整) 的 續(xù)集
下載地址:http://sonic.peakle.net/download/sonic015.rar
將增加以下部份內容
注冊新用戶,用戶瀏覽、刪除用戶
現(xiàn)在導入原工程
打開
UserDAO.java
文件,增加以下方法,此方法為增加用戶
public interface UserDAO {
???
public abstract boolean isValidUser(String username, String password);
???
public abstract boolean addUser(User user);
}
打開
UserDAOImp.java
文件,添加接口方法的實現(xiàn),并為方法編寫以下內容:
???
public boolean addUser(User user) {
??????? try {
??????????? this.getHibernateTemplate().save(user);
??????? } catch (Exception e) {
??????????? System.out.println(e.getMessage());
??????????? return false;
??????? }
??????? return true;
??? }
按下
Ctrl + N
,
使用向導創(chuàng)建
add.jsp
、
AddForm(
動態(tài)
)
、
AddAction.java
文件
,
這是注冊新用戶的
Action
修改配置內容如下
:
<
action
?????
attribute
=
"addForm"
?????
input
=
"/add.jsp"
?????
name
=
"addForm"
?????
path
=
"/add"
?????
scope
=
"request"
?????
validate="true"
?????
type
=
"
org.springframework.web.struts.DelegatingActionProxy
"
/>
第一句實現(xiàn)了必須對提交的數(shù)據(jù)進行驗證
第二句實現(xiàn)了和spring集成
修改
AddAction.java
文件,內容如下:
??? private UserDAO userDAO;
???
??? public UserDAO getUserDAO() {
???????
return userDAO;
??? }
??? public void setUserDAO(UserDAO userDAO) {
??????? this.userDAO = userDAO;
??? }
??? public ActionForward execute(
??????? ActionMapping mapping,
??????? ActionForm form,
??????? HttpServletRequest request,
??????? HttpServletResponse response) {
??????? DynaActionForm addForm = (DynaActionForm) form;
???????
User user=new User();
??????? user.setUsername(addForm.getString("username"));
??????? user.setPassword(addForm.getString("password"));
??????? addForm.set("password", null);
??????? if (userDAO.addUser(user)) {
??????????? return mapping.findForward("indexGo");
??????? } else {
??????????? return mapping.getInputForward();
??????? }
??? }
關于在
Action
中使用
User
對像
,
我在這里沒有使用
IoC
方式進行管理
,
這不好
,
希望大家在正式應用中使用。
在
spring
配置文件
(applicationContext.xml)
中加入以下內容
:
??????
<
bean
name
=
"/add"
class
=
"com.test.struts.action.AddAction"
singleton
=
"false"
>
??????
<
property
name
=
"userDAO"
>
??????????
<
ref
bean
=
"userDAOProxy"
/>
??????
</
property
>
???
</
bean
>
修改
index.jsp
文件
<
html
>
?
<
head
>
???
<
title
>
Struts+Spring+Hibernate
</
title
>
?
</
head
>
?
?
<
body
>
???
<
a
href
=
"login.jsp"
>
Login
</
a
>
???
<br>
??? <a href="add.jsp">Add User</a>
?
</
body
>
</
html
>
修改
add.jsp
文件的首行
,
替換為以下內容
,
目的是為了使用
UTF-8
的編碼格式顯示頁面
<%@
page
language
=
"java"
contentType
=
"text/html; charset=UTF-8"
%>
修改
validation.xml
文件
,
加入以下內容
:
???????
<
form
name
=
"addForm"
>
??????????
<
field
property
=
"username"
depends
=
"required"
>
?????????????
<
arg0
key
=
"prompt.username"
/>
??????????
</
field
>
??????????
<
field
property
=
"password"
depends
=
"required"
>
?????????????
<
arg0
key
=
"prompt.password"
/>
??????????
</
field
>
??????
</
form
>
現(xiàn)在整個 AddUser 已經完成,如果你覺得不放心的話可以在這里停一停先進行這一段的測試!
創(chuàng)建一個Action用于查詢數(shù)據(jù),名稱為
find
創(chuàng)建
display.jsp
文件,用于顯示所有用戶
創(chuàng)建一個
forward
指向
display.jsp
選中
redirect
修改
UserDAO.java
文件,增加
findAllUser()
方法,代碼如下:
???
public abstract List findAllUser();
修改 UserDAOImp.java 文件,增加
findAllUser()
方法,代碼如下:
???
public List findAllUser() {
??????? List users=this.getHibernateTemplate().find("from User u");
??????? if(users.size()>0)
??????????? return users;
??????? return null;
??? }
修改
struts-config.xml
文件
<
action
path
=
"/find"
type
=
"
org.springframework.web.struts.DelegatingActionProxy
"
/>
修改
FindAction.java
文件
,
內容如下
:
???
private UserDAO userDAO;
???
??? public UserDAO getUserDAO() {
??????? return userDAO;
??? }
??? public void setUserDAO(UserDAO userDAO) {
??????? this.userDAO = userDAO;
??? }
???
public ActionForward execute(
??????? ActionMapping mapping,
??????? ActionForm form,
??????? HttpServletRequest request,
??????? HttpServletResponse response) {
???????
List users=userDAO.findAllUser();
??????? if(users!=null){
??????????? HttpSession session=request.getSession();
??????????? session.setAttribute("users",users);
??????????? return mapping.findForward("displayGo");
??????? }
??????? return mapping.getInputForward();
??? }
在
spring
配置文件
(applicationContext.xml)
中加入以下內容
:
??????
<
bean
name
=
"/find"
class
=
"com.test.struts.action.FindAction"
singleton
=
"false"
>
??????
<
property
name
=
"userDAO"
>
??????????
<
ref
bean
=
"userDAOProxy"
/>
??????
</
property
>
???
</
bean
>
修改
display.jsp
文件
,
內容如下
:
<%@
page
language
=
"java"
import
=
"java.util.*"
pageEncoding
=
"UTF-8"
%>
<%@
taglib
uri
=
"http://jakarta.apache.org/struts/tags-bean"
prefix
=
"bean"
%>
<%@
taglib
uri
=
"http://jakarta.apache.org/struts/tags-html"
prefix
=
"html"
%>
<%@
taglib
uri
=
"http://jakarta.apache.org/struts/tags-logic"
prefix
=
"logic"
%>
<
html
>
?
<
head
>
???
<
title
>
DISPLAY
</
title
>
?
</
head
>
?
<
body
>
???
<
logic:present
name
=
"users"
>
???
<
form
action
=
"del.do"
>
???
<
table
border
=
"1"
>
???
<
logic:iterate
id
=
"element"
name
=
"users"
>
???
<
tr
><
td
width
=
"100"
>
??????
<
input
type
=
"radio"
name
=
"select"
value
=
"
<
bean:write
name
=
"element"
property
=
"id"
/>
"
>
???
<
bean:write
name
=
"element"
property
=
"username"
/>
???
</
td
></
tr
>
???
</
logic:iterate
>
???
</
table
>
???
<
INPUT
type
=
"submit"
name
=
"Submit"
value
=
"submit"
>
???
</
form
>
???
</
logic:present
>
?
</
body
>
</
html
>
現(xiàn)在整個 Display 已經完成,如果你覺得不放心的話可以在這里停一停先進行這一段的測試!
新建一個 Action 用于刪除選中的用戶,name:del
修改
struts-config.xml
文件中的以下內容為:
<
action
path
=
"/
修改
UserDAO.java
文件
,
增加以下方法
public interface UserDAO {
??? public abstract boolean isValidUser(String username, String password);
??? public abstract boolean addUser(User user);
???
public abstract List findAllUser();
??? public abstract boolean delUser(Integer lid);
}
修改
UserDAOImp.java
文件
,
添加新增的兩個方法
,
并編寫以下內容
:
???
public boolean delUser(Integer lid) {
??????? try {
??????????? User user=(User)this.getHibernateTemplate().load(User.class,lid);
??????????? this.getHibernateTemplate().delete(user);
??????? } catch (Exception e) {
??????????? System.out.println(e.getMessage());
??????????? return false;
??????? }
??????? return true;
??? }
修改
DelAction.java
文件
,
內容如下
:
public class DelAction extends Action {
???
private UserDAO userDAO;
??? public UserDAO getUserDAO() {
??????? return userDAO;
??? }
??? public void setUserDAO(UserDAO userDAO) {
??????? this.userDAO = userDAO;
??? }
??? public ActionForward execute(
??????? ActionMapping mapping,
??????? ActionForm form,
??????? HttpServletRequest request,
??????? HttpServletResponse response) {
???????
Integer selid=Integer.valueOf(request.getParameter("select"));
??????? if(userDAO.delUser(selid))
??????????? return mapping.findForward("indexGo");
??????? return mapping.getInputForward();
??? }
}
在
spring
配置文件
(applicationContext.xml)
中加入以下內容
:
??????
<
bean
name
=
"/
??????
<
property
name
=
"userDAO"
>
??????????
<
ref
bean
=
"userDAOProxy"
/>
??????
</
property
>
???
</
bean
>
修改
index.jsp
文件
<
html
>
?
<
head
>
???
<
title
>
Struts+Spring+Hibernate
</
title
>
?
</
head
>
?
?
<
body
>
???
<
a
href
=
"login.jsp"
>
Login
</
a
>
???
<
br
>
???
<
a
href
=
"add.jsp"
>
Add User
</
a
>
???
<br>
??? <a href="find.do">Display</a>
?
</
body
>
</
html
>
代碼已經全部完成,可以進行測試了!!!
在添加用戶的過程中出現(xiàn)了錯誤,就是沒有驗證就直接提交了,并能夠提交空的用戶!
這里解決的方式有多種,修改程是肯定的了,還有就是在設計數(shù)據(jù)庫的時候加上限制如將 username 和 password 為字設置為 not null
將修改這一段
<
form-bean
name
=
"addForm"
type
=
"org.apache.struts.action.DynaActionForm"
>
?????
<
form-property
name
=
"password"
type
=
"java.lang.String"
/>
?????
<
form-property
name
=
"username"
type
=
"java.lang.String"
/>
???
</
form-bean
>
修改后
:
<
form-bean
name
=
"addForm"
type
=
"
org.apache.struts.validator.DynaValidatorForm
"
>
?????
<
form-property
name
=
"password"
type
=
"java.lang.String"
/>
?????
<
form-property
name
=
"username"
type
=
"java.lang.String"
/>
???
</
form-bean
>
可以了,這集就講到這里了!下集再見!