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,好了,就可以了 呵呵,终于完成了。
posted on 2008-07-25 21:14
胖胖泡泡 阅读(436)
评论(0) 编辑 收藏