本节利用dorado自带的页面流技术实现登陆控制。
添加视图模型对象
与上节《Servlet技术实现》相关小节相同。
添加dataset对象
与上节《Servlet技术实现》相关小节相同。
添加AutoForm
与上节《Servlet技术实现》相关小节相同。
添加label和button
与上节《Servlet技术实现》相关小节相同。
AutoForm引入label和button
与上节《Servlet技术实现》相关小节相同。
添加RequestCommand对象
增加一个RequestCommand(cmdLogin),设置path属性为logincontroller.login.d,表示该Command将用户登陆信息发送到logincontroller.login.d (该Controller将在下一节中定义)中作验证。如下图:
图表 4 16
在Studio的Login视图模型中选择编辑界面下方的标签页Events Inspector切换到事件视图,并选择cmdLogin对象,并选择右侧的事件列表中的beforeExecute事件:
图表 4 17
双击打开事件编辑器,输入如下的代码:
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 18
为了单击按钮时可以执行这个命令,我们将btnLogin按钮的command属性设置为cmdLogin。这样按钮被单击时,按钮会自动地执行cmdLogin的命令,并执行beforeExecute方法实现参数赋值操作,并最终会将登陆信息发送到logincontroller.login.d中作校验,下一步我们就是要在服务器定义一个Controller,用来实现登陆验证。
添加logincontroller
在Studio环境下,刷新工程,并在Mapping节点下新增Mapping文件:
图表 4 19
命名为hr,并确定:
图表 4 20
打开新建的mapping文件hr:
图表 4 21
在其中的controllers中添加controller节点并命名为logincontroller。选中新增的logincontroller节点,并新增action,并命名为login:
图表 4 22
在login节点下新增两个forward,name分别为success,failure:
图表 4 23
设置success的forward属性为"/main.jsp",表示登陆成功后将跳转到main.jsp。
图表 4 24
设置failure的forward属性为"/login.jsp",表示登陆失败后跳转到login.jsp。
图表 4 25
利用dorado studio选择source的hr目录,打开右键菜单,并选择new菜单目录中的class选项,打开如下的向导视图:
图表 4 26
选择其中的第三种Access Controller Class,并选择OK按钮,进入下一步向导图:
图表 4 27
设定Class Name为LoginController,保持Package和其他属性不变,并单击OK按钮。关闭向导窗口。得到LoginController.java的代码:
package hr; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.bstek.dorado.action.Action; import com.bstek.dorado.action.impl.AbstractAccessController; import com.bstek.dorado.utils.*; /** * LoginController */ public class LoginController extends AbstractAccessController { public boolean login(Action action, HttpServletRequest request, HttpServletResponse httpServletResponse) { String user = request.getParameter("user"); String password = request.getParameter("password"); if (StringHelper.isNotEmpty(user)) { if (!"dorado".equals(password)) { action.addMessage("Invalid password!"); action.addMessage("Please check your password and try again!"); return false; } } else { action.addMessage("User Name Missed!"); action.addMessage("Please enter the user name and try again!"); return false; } return true; } public void logout(Action action, HttpServletRequest request, HttpServletResponse httpServletResponse) { } }
将其中的代码"user"修改为"id","password"修改为"pwd","dorado"修改为"admin"。
最终代码为:
package hr; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.bstek.dorado.action.Action; import com.bstek.dorado.action.impl.AbstractAccessController; import com.bstek.dorado.utils.*; /** * LoginController */ public class LoginController extends AbstractAccessController { public boolean login(Action action, HttpServletRequest request, HttpServletResponse httpServletResponse) { String user = request.getParameter("id"); String password = request.getParameter("pwd"); if (StringHelper.isNotEmpty(user)) { if (!"admin".equals(password)) { action.addMessage("Invalid password!"); action.addMessage("Please check your password and try again!"); return false; } } else { action.addMessage("User Name Missed!"); action.addMessage("Please enter the user name and try again!"); return false; } return true; } public void logout(Action action, HttpServletRequest request, HttpServletResponse httpServletResponse) { } }
回到mapping配置文件中设定logincontroller的clazz属性为"hr. LoginController":
图表 4 28
最后将mapping文件hr加入到Mapping文件global的申明中,打开Mapping文件global:
图表 4 29
在units节点下新增节点,并设置name属性为hr,表示将我们自定义的Mapping文件加入到dorado的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环境中,刷新src,home和WebRoot目录,读取dorado studio中新创建的login.jsp文件。
启动集成的Tomcat5服务。在浏览器中输入:
http://localhost:8080/doradosample/login.jsp
在以下的界面中输入用户名admin,并作登陆测试:
图表 4 30
(Mapping实现完毕)
Attachments:











