点击 Next,填写其他必要信息后,这个 Server 就被添加到 RAD 中,可以在 RAD 中控制 Server 的启动、停止、重启、应用部署、应用移除等工作。
当 WAS Server 的状态为”Started, Synchronzied”时,右键点击 AccountManagementWeb 项目中 AccountLogin.jsp,选择 Run as -> Run on Server ,选择 WAS V8 Server,Account Login 应用就被部署到 WAS server 上。 同时,RAD 内置的 Web browser 会访问 http://localhost:9081/AccountManagementWeb/AccountLogin.jsp , 显示 AccountLogin.jsp 中设计的登录界面。输入预先定义好的用户名 username0,密码 password0,点击 Login 按钮,用户登录成功,页面转去显示 username0 用户的详细信息,如前文图 1 所示。
至此,我们已经完成了用 EJB 3.1,JPA 2.0,Servlet 3.0 构建 Account Login 程序的工作。在下文中,我们将对其进行一定的改动,进一步丰富其功能。
利用 EJB in WAR 对 Account Login 程序重新打包
在前文中,我们生成了 AccountManagementEJB 和 AccountManagementWeb 两个工程,并将其加入到 AccountManagement.ear 中。当您在 RAD 中导出该 ear 文件时,Web 模块和 EJB 模块将被分别打包成 .war 和 .jar 文件,如图 15 所示:
图 15. AccountManagement.ear 内容
EJB 3.1 规范允许将 EJB bean class 文件直接打包在 WEB-INF/classes 目录下或者将 .jar 文件直接部署在 WEB-INF/lib 目录下。如图 16 所示。
利用 EJB in WAR 的新特性,我们可以在 RAD 中对 Account Login 程序重新打包。新建一个 Dynamic Web Project, 命名为 AccountManagementWeb_updated,即可直接在这个工程中进行 EJB session bean, JPA entity, Servlet 的开发,而无需再单独创建的 EJB 项目。
方便起见,在本文中,我们仅仅是将 前一章中创建的代码和 xml 文件复制到新的 AccountManagementWeb_updated 工程中,如图 17 所示。
图 17. AccountManagementWeb_updated 工程图示
figure17_AccountManagementWeb_updated.jpg
导出 AccountManagementWeb_updated.war, 可以在 WEB-INF/classes 目录下找到 EJB session beans。如图 18 所示。
图 18. AccountManagementWeb_updated.war 内容
将 AccountManagementWeb_updated 部署到 WAS 中,运行 AccoutLogin.jsp,可以完成前文描述的全部功能。
利用 Bean Validation 扩展 Account Login 程序
JSR 303 Bean Validation 规范提供了对 Java EE 和 Java SE 中 Java Bean 进行验证的方式,主要使用注释方式实现对 Java Bean 的验证功能,使验证逻辑从业务代码中分离出来。 Bean Validation 被 Java EE 6 各个规范广泛支持,包括 EJB, JPA, Servlet 等等。 详情参考文章”Bean Validation 技术规范特性概述“,本文中不再赘述。
在本章中,我们扩展 Account Login 程序,添加一个 Account Create 模块,用于注册新用户。利用 Bean Validation 规范内嵌的 @Null, @Size 等注释,对用户输入的信息进行验证。
利用 Bean Validation,更新 Usertab.java, 如清单 8 所示。
@NotNull(message=”Username cannot be null.”) @Size(min=3, max=36, message=”A username cannot be less than 3 characters or longer than 36 characters.”) private String username; @NotNull(message=”Must have a password set.”) @Size(min=6, max=12, message=”Your password must be 6-12 characters long.”) private String password;
@NotNull(message=”Email must be provided in format you@there.com”) @Size(max=36, message=”An email address cannot be longer than 36 characters.”) @Pattern(regexp = “[\\w!#\\$%&’\\*\\+\\-/=\\?\\^_`\\{\\}\\|~\\.] +@[\\w\\-&&[^_]]+\\.[a-zA-Z]{2,4}”, message=”An email address must include an @ and a . to be valid.”) private String email; |
清单 8 中,@Null 注释表示其修饰的变量不为空,@Size 注释表示其修饰的变量长度限制,@Pattern 注释要求其修饰的变量必须符合规定的正则表达式规则。
更新 AccountService.java, 添加 AccountCreate 方法,对用户输入进行验证。参考清单 9。
user = new Usertab(username, password, email); Set<ConstraintViolation<Usertab>> set = validator.validate(user); if (!set.isEmpty()) { throw new AccountManagementExceptions(“Error in values you’ve given to user. Rules are, username must be more than 3 characters or less than 36 characters, email must be in the form of you@there.com, and a password from 6-12 characters long.”); } try { em.persist(user); } catch (Exception e) { …. } |
更新 Servlet 和 JSP,添加 AccountCreate.jsp 和 AccountCreate.java,参考图 17 的示例。其源代码不在此赘述,请参见附录的代码清单。
在 RAD 中运行 AccountCreate.jsp, 输入合法的用户注册信息,新用户生成,页面转而显示用户信息,如图 19 所示。
以下文章点击率最高
Loading…