Dorado 5 : d.Struts技术实现登录页面 (T1B)

本例采用Struts1.02版本实现,实现之前请先将1.02版本的struts.jar文件放置在工程WebRoot/WEB-INF/lib目录下。

添加视图模型对象

与上节《Servlet技术实现》相关小节相同。

添加dataset对象

与上节《Servlet技术实现》相关小节相同。

添加AutoForm

与上节《Servlet技术实现》相关小节相同。

添加label和button

与上节《Servlet技术实现》相关小节相同。

AutoForm引入label和button

与上节《Servlet技术实现》相关小节相同。

添加RequestCommand对象

增加一个RequestCommand(cmdLogin),设置path属性为loginaction.do,表示该Command将用户登陆信息发送到loginaction (该Action将在下一节中定义)中作验证。如下图:

图表 4 31
在Studio的Login视图模型中选择编辑界面下方的标签页Events Inspector切换到事件视图,并选择cmdLogin对象,并选择右侧的事件列表中的beforeExecute事件:

图表 4 32
双击打开事件编辑器,输入如下的代码:

var id = dsLogin.getValue("id"); 
var pwd = dsLogin.getValue("pwd"); 
command.parameters().setValue("id",id); 
command.parameters().setValue("pwd",pwd);

表示从dsLogin中取出用户名id和密码pwd放到cmdLogin的parameters中。
Login视图模型中选择编辑界面下方的标签页Properties Inspector切换到属性视图,并选择cmdLogin对象,展开该节点找到Frame的target属性,设置为"_self":

图表 4 33
为了单击按钮时可以执行这个命令,我们将btnLogin按钮的command属性设置为cmdLogin。这样按钮被单击时,按钮会自动地执行cmdLogin的命令,并执行beforeExecute方法实现参数赋值操作,并最终会将登陆信息发送到loginaction.do中作校验,下一步我们就是要在服务器定义一个Servlet,用来实现登陆验证。

添加loginaction

在MyEclipse环境下,刷新工程,并在src/hr目录下添加一个Action,负责处理客户端得登陆校验,代码如下:

package hr;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class LoginAction extends Action {
    public ActionForward perform(ActionMapping actionMapping,
            ActionForm actionForm, HttpServletRequest request,
            HttpServletResponse response) {
        String usr = request.getParameter("id");
        String pwd = request.getParameter("pwd");
        if ("admin".equals(usr)) {
            return actionMapping.findForward("success");
        } else
            return actionMapping.findForward("failure");
    }
}

perform方法通过request对象获得参数用户登录时输入的id以及pwd信息。该处的用户名以及密码校验我们采用比较简单的判断处理。实际开发可灵活变通。

配置struts-config.xml

在WebRoot的web-inf目录下确保有strtus-config.xml,如果没有可以新增一个xml文件,代码配置如下:

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD 
Struts Configuration 1.0//EN" 
"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd"> 
 <struts-config> 
 <action-mappings> 
 <action path="/loginaction" type="hr.LoginAction" > 
 <forward name="success" path="/main.jsp" /> 
 <forward name="failure" path="/login.jsp" /> 
 </action> 
 </action-mappings> 
 </struts-config>

其中主要包含loginaction的声明。以及forward设定。

修改web.xml配置

在web.xml中添加如下的servlet的申明:

 <servlet> 
 <servlet-name>action</servlet-name> 
 <servlet-class> 
 org.apache.struts.action.ActionServlet 
 </servlet-class> 
 <init-param> 
 <param-name>config</param-name> 
 <param-value>/WEB-INF/struts-config.xml</param-value> 
 </init-param> 
 <init-param> 
 <param-name>debug</param-name> 
 <param-value>2</param-value> 
 </init-param> 
 <init-param> 
 <param-name>application</param-name> 
 <param-value>ApplicationResources</param-value> 
 </init-param> 
 <load-on-startup>2</load-on-startup> 
 </servlet> 
 <servlet-mapping> 
 <servlet-name>action</servlet-name> 
 <url-pattern>*.do</url-pattern> 
 </servlet-mapping>

创建JSP

利用视图模型的JSP创建向导,在WebRoot根目录下创建login.jsp,代码如下:

<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ taglib uri="http://www.bstek.com/dorado" prefix="d" %> 
 <html> 
 <head> 
 <title></title> 
 </head> 
 <body> 
 <d:View config="hr.Login"> 
 <d:Layout type="vflow" height="100%"> 
 <d:Pane align="center"> 
 <d:AutoForm id="frmLogin" /> 
 </d:Pane> 
 </d:Layout> 
 </d:View> 
 </body> 
 </html>

运行测试

在MyEclipse环境中,刷新WebRoot目录,读取dorado studio中新创建的login.jsp文件。
启动集成的Tomcat5服务。在浏览器中输入:
http://localhost:8080/doradosample/login.jsp
在以下的界面中输入用户名admin,并作登陆测试:

图表 4 34
(Struts实现完毕)