利用Myeclipse快速开发struts应用程序

这篇我在是以前版本上的修正版^对新手有帮助咯!!

开发环境:
jdk1.42
eclipse3.2
myeclipse5.0
tomcat5.0

 

简介:
文本主要介绍用myeclipse的struts designer(图形化开发环境)开发一个简单的用户登录程序片段。
主要包括2个jsp文件、一个ActionForm、一个Action等其它
userLogin.jsp(用户登录及错误提示页面) userLoginSuccess.jsp(提示登录成功页面)
UserLoginForm.java(ActionForm,存放用户提交信息)
UserLoginAction.java(Action,简单的处理用户登录事件)

 
开始吧

首先我们先建立一个j2ee的web project.如图1:
利用Myeclipse快速开发struts应用程序

点击next,Project name输入LoginDemo,其余保持默认,点击finish.
在package explorer下,就可以看到我们的项目了,然后给这个项目添加Struts框架必要的文件.在我们项目名上点击右键,选择MyEclipes --> Add Struts Capabilities...弹出对话框图2:
利用Myeclipse快速开发struts应用程序
其中Struts config path就是我们的struts配置文件,URL pattern我们选择*.do,Default application resource为我们默认的资源文件地方,你可以选择它的存储位置,我们在这里保持默认。点击Finish后,项目结构类似于图3:
利用Myeclipse快速开发struts应用程序

现在就来开始我们的例子吧。点击这个界面左下角的Design进入可视化设计界面。有没有注意右边的Palette :) 点击它,让我们来开始我们的jsp页面设计。我们先建立userLoginSuccess.jsp文件,为啥先建这一个呢?等下就知道了,在myeclipse中可以一次性把我们的Action,ActionForm,Jsp文件一次建好(将三个有关联的文件等下创建)。
点击Palette面版上的创建JSP文件图标,弹出创建JSP文件面板。图4:
利用Myeclipse快速开发struts应用程序

File Name里输入userLoginSuccess.jsp,Template to use选择2] Standard JSP using Struts 1.1,点击Finish完成。
完成后,struts-config.xml文件自动被更新,可视化界在上也出现了刚新建的JSP模块。新建的jsp文件也被打开了。

然后在<body></body>中添加:
Hello <bean:write name="userName" scope="request" /> .
这里将request中的属性userName输出在页面上,所以等下我们在UserLoginAction中,登录成功后要设置一个相关属性。

OK,下面来开始我们最后三个文件的设计吧。在Struts-config.xmlDesign模式中,在画版的空白区域点右键,选择New --> New Form, Action and JSP 弹出ActionForm的选项面板,我们按图上输入相关值,图5:
利用Myeclipse快速开发struts应用程序

Optional DetailsForm Properties选项卡,点add为这个ActionForm添加相关值,在这个登录示例中,将添加两个属性userName和password,图6:
利用Myeclipse快速开发struts应用程序
在添加password时,注意将JSP input type 下拉框选择password.
完成这步后,我们就将ActionForm设计完成。
接下来选择 Optional DetailsJSP选项卡,我们选中Create JSP form? 这一步myeclipse将为我们创建一个简单的与用户交互的登录页面。保持内容和图7一样。图7:
利用Myeclipse快速开发struts应用程序
因为我们这只是简单的演示一个登录片段,所以不用验证用户信息是否合法,所以将 Option Detailsmethod选项卡的新建方法去掉,如图8:
利用Myeclipse快速开发struts应用程序
点Next,进入Action选项面板.将Option DetailsForm选项卡中Validate Form取消选择,如图9:
利用Myeclipse快速开发struts应用程序
然后在Forwards选项卡中点add添加成功和失败返回的页面.如图10:
利用Myeclipse快速开发struts应用程序
点击Finish完成。在Struts-config.xmlDesign中,可以看到图11所示:
利用Myeclipse快速开发struts应用程序
最后,简单的修改一下userLogin.jsp,将所有<%@ taglib ...%>替换为:
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
修改UserLoginAction中的execute片段为如下所示,图12:
利用Myeclipse快速开发struts应用程序

OK,完成。。。下面就部暑项目,测试。。。

像为项目添加Struts框架一样,在项目名上右击,选择MyEclipse --> Add and Remove Project development.
在弹出对话框上,单击add ,在弹出的 New Deployment 对话框上,Server选Tomcat5,点击Finish完成部署,如图13:
利用Myeclipse快速开发struts应用程序
在用浏览器上打开:http://127.0.0.1:8080/LoginDemo/userLogin.jsp
输入密码123456,用户名EricHe。显示成功:
利用Myeclipse快速开发struts应用程序
如果输错,或不输入,则无反映又回到当前登录页面(因为我们没有设置错误信息)。

1.附[加入数据库以进行身份验证]
在UserLoginAction.java 文件中加入数据库访问.修改代码如下:
package com.yourcompany.struts.action;

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 java.sql.*;

import com.yourcompany.struts.form.UserLoginForm;


public class UserLoginAction extends Action {

 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  UserLoginForm userLoginForm = (UserLoginForm) form;
  
  String name = userLoginForm.getUserName();
  String password = userLoginForm.getPassword();

  // DBbase myDb=new DBbase();
  // ResultSet rs=null;
  // int result =0;
  String sql = "select *  from userid where name = '" + name
    + "' and psw = '" + password + "'";
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection con = DriverManager.getConnection("jdbc:odbc:test", "",
     "");
   Statement stmt = con.createStatement();
   ResultSet rs = stmt.executeQuery(sql);
   rs = stmt.executeQuery(sql);
   if (rs.next()) {
    request.setAttribute("userName", userLoginForm.getUserName());
    return mapping.findForward("success");
   }

   
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return mapping.findForward("failure");
  /*
   * if (userLoginForm.getUserName().equals("EricHe") &&
   * userLoginForm.getPassword().equals("123456")) {
   * request.setAttribute("userName", userLoginForm.getUserName()); return
   * mapping.findForward("success");
   *  //
   */
 }
}
当然要在本机上建立数据源!!!
运行结果如下:利用Myeclipse快速开发struts应用程序利用Myeclipse快速开发struts应用程序利用Myeclipse快速开发struts应用程序

OK好了!


2.附[将数据库封装成一个bean类]


 (1)在项目中增加一个数据库封装类DBbase.java
//package com.yourcompany.struts.action;

import java.sql.*;

public class DBbase {
        String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
        String sConnstr = "jdbc:odbc:test";
        Connection connect = null;
        ResultSet rs = null;
        Statement stmt = null;


        public DBbase()
        {

                try
                {

                        Class.forName(sDBDriver);

                }
                catch(ClassNotFoundException ex)
                {
                        System.err.println(ex.getMessage());

                }
        }
        public ResultSet executeQuery(String sql)
        {

                try
                {
                        this.connect = DriverManager.getConnection(sConnstr);
                        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);
                        this.stmt = this.connect.createStatement();
                        result = stmt.executeUpdate(sql);
                }
                catch(SQLException ex)
                {
                        System.err.println(ex.getMessage());
                }
                return result;
        }
public void close(){
 if(connect !=null){
  try{
   connect.close();
   connect=null;
  }catch(SQLException ex){
   System.err.print(ex.getMessage());
  }
 }
 
}
}

(2)修改类UserLoginAction

package com.yourcompany.struts.action;

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 java.sql.*;
//若不在同一包则,要引入封装数据库所在的包

import com.yourcompany.struts.form.UserLoginForm;

public class UserLoginAction extends Action {

 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  UserLoginForm userLoginForm = (UserLoginForm) form;

  String name = userLoginForm.getUserName();
  String password = userLoginForm.getPassword();
  String sql = "select *  from userid where name = '" + name
    + "' and psw = '" + password + "'";
  DBbase myDb = new DBbase();
  ResultSet rs = null;
  
  try {
   rs = myDb.executeQuery(sql);
   if (rs.next()) {
    request.setAttribute("userName", name);
    return mapping.findForward("success");
   }
  } catch (SQLException ex) {
   ex.printStackTrace();

  }

  return mapping.findForward("failure");
 }
}
运行效果如上!!!