Myeclipse开发Struts应用程序示例
Struts实质上就是在JSP Model 2的基础上实现的一个MVC框架。由一组相互协作的类、Servlet以及JSP TagLib组成。Struts的核心组件主要包括:ActionServlet 、Action、 ActionMapping 、ActionForward、 ActionForm 、ActionError 及Struts标签库组成。
Struts 对于一个出学者来说,确实有一点困难,感觉是无形的,抓不住各个组件之间的逻辑,本实例主要是运用Myeclipse开发Struts的用户登录程序,把无形的Struts变成有形的。
本应用程序主要由以下5个文件组成:login.jsp 登录页面,success.jsp提交成功后的页面,如果提交失败,在次返回登录页面;LoginForm.java(ActionForm,存放用户提交信息),LoginAction.java(Action,简单的处理用户登录事件);及数据库连接文件DBConnect.java。
下面我们又要开始了。。。
S1。 新建J2EE工程的web Project工程,工程名为:LoginStrutsDemo
然后给这个项目添加Struts框架必要的文件.在我们项目名上点击右键,选择MyEclipes --> Add Struts Capabilities...弹出对话框如下:
![]()
其中Struts config path就是我们的struts配置文件,URL pattern我们选择*.do,Default application resource为我们默认的资源文件地方,你可以选择它的存储位置,我们在这里保持默认。点击Finish后,项目结构如下图:
然后双击打开/WEB-INF/web.xml文件,为其添加标签库。可以在Design界面或Source界面下添写一个jsp-config标签,如下图:
![]()
然后,右击OutLine框的jsp-config标签,添加三个taglib子标签,添好之后如下页面:
或直接在Web.xml文件的Source 中将下面代码添加至 </webapp> 上面:
<
jsp-config
>
<
taglib
>
<
taglib-uri
>
/tags/struts-html
</
taglib-uri
>
<
taglib-location
>
/WEB-INF/struts-html.tld
</
taglib-location
>
</
taglib
>
<
taglib
>
<
taglib-uri
>
/tags/struts-bean
</
taglib-uri
>
<
taglib-location
>
/WEB-INF/struts-bean.tld
</
taglib-location
>
</
taglib
>
<
taglib
>
<
taglib-uri
>
/tags/struts-logic
</
taglib-uri
>
<
taglib-location
>
/WEB-INF/struts-logic.tld
</
taglib-location
>
</
taglib
>
</
jsp-config
>
S2。打开struts-config.xml文件,点击这个界面左下角的Design进入可视化设计界面。我们先建立success.jsp文件如下:
把JSP托到面版中,弹出如下对话框:
![]()
File Name :successs.jsp
完成后,struts-config.xml文件自动被更新,可视化界在上也出现了刚新建的JSP模块。新建的jsp文件也打开了。覆盖所有的<%@ taglib ...... ,用我们开始在/WEB-INF/web.xml中定义的:
然后在<body></body>中添加:
Hello ,<bean:write name="userName" scope="request" /> .
这里将request中的属性userName输出在页面上,所以等下我们在loginAction中,登录成功后要设置一个相关属性。
S3。下面来开始我们最后三个文件的设计吧。在Struts-config.xml的Design模式中,在画版的空白区域点右键,选择New --> New Form, Action and JSP 弹出ActionForm的选项面板,我们按图上输入相关值,如下:
因为我们这只是简单的演示一个登录片段,所以不用验证用户信息是否合法,所以将 Option Details的method选项卡的新建方法去掉,如图:
接下来选择 Optional Details的JSP选项卡,我们选中Create JSP form? 这一步myeclipse将为我们创建一个简单的与用户交互的登录页面:
点Next,进入Action选项面板.将Option Details的Form选项卡中Validate Form取消选择,如图:
![]()
在添加两个全局Forward,如下:
点击Finish完成。在Struts-config.xml的Design中,可以看到图所示:
最后,简单的修改一下login.jsp,将所有<%@ taglib ...%>替换为:
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
S4。运用MySQL建立数据库脚本如下:
Create
database
strutsuser;
User
strutsuser;
Create
table
users(
Username
varchar
(
10
)
primary
key
,
Password
varchar
(
10
)
);
Insert
into
users
values
(‘chen’,’
123456
’);
然后,添加数据库驱动。右键点击工程名LoginStrutsDemo,选择PropertiesàJava Build PathàLiberariesàAdd External JARs…
点击OK之后,在把MySQL数据库驱动文件拷贝到/WEB-INF/lib路径下面,F5刷新。
S5。建立数据库连接文件:DBConnection.java
代码如下:
package com.chen.struts.action;
import java.sql.
*
;
![]()
public
class DBConnection {
String sDBDriver
=
"com.mysql.jdbc.Driver";
String sConnstr
=
"jdbc:mysql:
//
192.168
.
1.103
:
3306
/
strutsUser?useUnicode
=
true
&
characterEncoding
=
GBK";
Connection connect
=
null
;
ResultSet rs
=
null
;
Statement stmt
=
null
;
public
DBConnection()
{
try
{
Class.forName(sDBDriver);
}
catch(ClassNotFoundException ex)
{
System.err.println(ex.getMessage());
}
}
![]()
public
ResultSet executeQuery(String sql)
{
try
{
this.connect
=
DriverManager.getConnection(sConnstr,"root","");
this.stmt
=
this.connect.createStatement();
rs
=
stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
return
rs;
}
![]()
public
int
executeUpdate(String sql)
{
int
result
=
0
;
try
{
this.connect
=
DriverManager.getConnection(sConnstr,"root","");
this.stmt
=
this.connect.createStatement();
result
=
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
return
result;
}
}
![]()
![]()
修改LoginAction 如下所示:
package com.chen.struts.action;
![]()
![]()
import java.sql.
*
;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.chen.struts.form.LoginForm;
![]()
![]()
/**/
/**
* MyEclipse Struts
* Creation date: 04-25-2007
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request"
* @struts.action-forward name="failture" path="/login.jsp"
* @struts.action-forward name="success" path="/success.jsp"
*/
![]()
![]()
public
class LoginAction extends Action {
![]()
/**/
/*
* Generated Methods
*/
![]()
/**/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public
ActionForward
execute
(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm
=
(LoginForm) form;
String name
=
loginForm.getUserName();
String password
=
loginForm.getPassword();
DBConnection myDb
=
new DBConnection();
ResultSet rs
=
null
;
int
result
=
0
;
![]()
//
String sql
=
"
select
count
(
*
)
as
count
from
users
where
username
=
'
"+name+"
'
and
password
=
'
"+password+"
'
";
String sql
=
"
select
count
(
*
)
as
count
from
users
where
username
=
'
"+name+"
'
and
password
=
'
"+password+"
'
";
try{
rs
=
myDb.executeQuery(sql);
if
(rs.
next
()){
result
=
rs.getInt("
count
");
}
}catch(SQLException ex){
ex.printStackTrace();
}
![]()
if
(result
>
0
){
request.setAttribute("userName", name);
return
mapping.findForward("success");
}
![]()
return
mapping.findForward("failure");
}
}
![]()
![]()
最后,部署MyEclipse J2EE Project 到服务器上,在启动MyEcplisp服务器,打开内置浏览器,输入:http://localhost:8080/LoginStrutsDemo/login.jsp,好了,就可以了 呵呵,终于完成了。