一路拾遗
Collect By Finding All The Way ......
posts - 81,comments - 41,trackbacks - 0

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(10primary 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 胖胖泡泡 阅读(435) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: