基于 Java EE 的企业应用系统设计 - Spring MVC 01MVC 模式示例 Spring MVC 数据绑定和表单标签库 基于 Java EE 的企业应用系统设计 Spring MVC 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 December 22, 2017 大纲 Java Web 应用的开发演化 MVC 模式示例 Spring MVC 数据绑定和表单标签库 References 1. Spring MVC: A Spring MVC 数据绑定和表单标签库 大纲 Java Web 应用的开发演化 MVC 模式示例 Spring MVC 数据绑定和表单标签库 大纲 Java Web 应用的开发演化 MVC 模式示例 Spring MVC 数据绑定和表单标签库 ��来� Java Web 应用的开发演化 MVC 模式示例 Spring MVC 数据绑定和表单标签库 大纲 Java Web 应用的开发演化 应用的开发演化 MVC 模式示例 Spring MVC 数据绑定和表单标签库 JSP 方式 JSP 在 HTML 代码里写 Java 代码完成业务逻辑。 <% String name = request.getParameter("name"); String password = request.getParameter("password"); UserHandler userHandler0 码力 | 67 页 | 792.43 KB | 1 年前3
Nacos架构&原理
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。 Namespace 的常用场景之⼀是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源 (如数据库配置、限流阈值、降级开关)隔离等。如果在没有指定 Namespace 的情况下,默认使 用 public 命名空间。 配置组(Group) Nacos 中的⼀组配置集,是配置的维度之⼀。通过⼀个有意义的字符串(如 Nacos 或者以集群模式启动 Nacos。而 Nacos 是⼀个需要 存储数据的⼀个组件,因此,为了实现这个目标,就需要在 Nacos 内部实现数据存储。单机下其 实问题不大,简单的内嵌关系型数据库即可;但是集群模式下,就需要考虑如何保障各个节点之间 的数据⼀致性以及数据同步,而要解决这个问题,就不得不引入共识算法,通过算法来保障各个节 点之间的数据的⼀致性。 为什么 Nacos 选择了 Raft ,因为客户端不会上报心跳, 那么自然就不能去自动摘除下线的实例。 67 > Nacos 架构 图 4 临时实例和持久化实例 在大中型的公司里,这两种类型的服务往往都有。⼀些基础的组件例如数据库、缓存等,这些往往 不能上报心跳,这种类型的服务在注册时,就需要作为持久化实例注册。而上层的业务服务,例如 微服务或者 Dubbo 服务,服务的 Provider 端支持添加汇报心跳的逻辑,此时就可以使用动态服0 码力 | 326 页 | 12.83 MB | 10 月前3
《Java 应用与开发》课程讲义 - 王晓东应用与开发课程的教学体系如图1所示,包括了 Java SE 和 Java EE 两个部分, 每部分都涉及一些验证性实验,另外,会开展两次稍微大一点的集成开发项目。同时, 在学习的过程中会穿插一些开发工具、设计模式、应用服务器和数据库的基本应用。 在课程学习的过程中,希望同学们要有足够的求知欲,养成良好的学习态度,具 备不断探索的精神,多尝新、多实践、多总结。我想这是计算机专业人士应该具备的 基本素养。 1 � 0 � 跨平台编程技术受到追捧 Sun在SunWorld'95宣布Java技术诞生,发布HotJava浏览器。 一次编写、随处运行 Sun发布Java的第1版。并开始提供和维护完备的Java开发工具集和代码库。 Java JDK JRE Java1 Java1.1 Java1.2 Java2 J2SE J2ME J2EE 标准版,开发适用于PC上运行的程序 微缩版,开发适用于手机等嵌入式设备的程序 19 图 1.1 Java 版本迭代 多线程 C++ 没有内置的多线程机制,需调用操作系统的多线程功能来进行多线程序设 计;Java 提供了多线程支持。 网络编程 Java 具有丰富的网络编程库。 编译和解释并存 由编译器将 Java 源程序编译成字节码文件,再由运行系统解释执行 字节码文件(解释器将字节码再翻译成二进制码运行)。 1.2 Java 平台核心机制 Java 技术栈如图10 码力 | 330 页 | 6.54 MB | 1 年前3
Java 应用与开发 - 异常处理中的异常处理 O 《The C++ Programming Language》 ▶ 一个库的作者可以检测出发生了运行时错误,但一般不知道 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在发现了自己无法处理的错误时抛出(throw)一个 中的异常处理 O 《The C++ Programming Language》 ▶ 一个库的作者可以检测出发生了运行时错误,但一般不知道 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在发现了自己无法处理的错误时抛出(throw)一个 中的异常处理 O 《The C++ Programming Language》 ▶ 一个库的作者可以检测出发生了运行时错误,但一般不知道 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在发现了自己无法处理的错误时抛出(throw)一个0 码力 | 33 页 | 626.40 KB | 1 年前3
跟我学Shiro - 张开涛Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信 息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的; Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support:Web 支持,可以非常容易的集成到 Web 环境; Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以 跟我学 数据放到 Memcached 服务器); SessionDAO:DAO 大家都用过,数据访问对象,用于会话的 CRUD,比如我们想把 Session 保存到数据库,那么可以实现自己的 SessionDAO,通过如 JDBC 写到数据库;比如想把 Session 放到 Memcached 中,可以实现自己的 Memcached SessionDAO;另外 SessionDAO 中可以使用 Cache (错误的凭证)、ExpiredCredentialsException(过期的 凭证)等,具体请查看其继承关系;对于页面的错误消息展示,最好使用如“用户名/密码 错误”而不是“用户名错误”/“密码错误”,防止一些恶意用户非法扫描帐号库; 2.6、最后可以调用 subject.logout 退出,其会自动委托给 SecurityManager.logout 方法退出。 从如上代码可总结出身份验证的步骤: 1、收集用户身份/凭证,即如用户名/密码;0 码力 | 219 页 | 4.16 MB | 10 月前3
Apache Shiro 1.2.x Reference Manual 中文翻译帮助你熟悉 Shiro 的设 计和 API。 当你跟随本教程时,如果你不想编辑文件,您可以获得一个几乎相同的示例作为参考。 选择一 个地址: 在Apache Shiro 的 Subversion 存储库: https://svn.apache.org/repos/asf/shiro/trunk/samples/quickstart/ 在Apache Shiro 的源码发布 samples/quickstart goodguy = winnebago:drive:eagle5 可以看到,在该配置文件中最基础地配置了几个静态的帐户,对我们这一个程序已经足够 了,在以后的章节中,将会看到如何使用更复杂的用户数据比如数据库、LDAP 和活动目录 等。 Referencing the Configuration 引用配置 现在我们已经定义了一个 INI 文件,我们可以在我们的示例程序中创建SecurityManager } //Subject 确保是一个已知的身份 ... } JSP TagLib Authorization 标签库授权 Shiro 提供了一个标签库来控制 JSP/GSP 页面输出,这将在 Web 文档中的 JSP/GSP 标签库 中讨论 Authorization Sequence 授权序列 现在我们已经看到如何对当前 Subject 执行授权,让我们了解一下当一个授权命令调用时0 码力 | 196 页 | 2.34 MB | 1 年前3
基于 Java EE 的企业应用系统设计 - Spring MVC 02errorCode) void rejectValue(String field, String errorCode, String defaultMessage) Errors 对象中的错误消息,可以利用表单标签库的 Errors 标签显 示在 HTML 页面中。 大纲 转换器和格式化(Converter and Formatter) 验证器 表达式语言(EL) JSTL ValidationUtils 类 转换器和格式化(Converter and Formatter) 验证器 表达式语言(EL) JSTL JSTL JSP 标准标签库(Java Server Pages Standard Tag Library, JSTL)是 一个定制标签库的集合,用来解决像遍历 map 或集合、条件测 试、XML 处理,甚至是数据库访问和数据操作等常见的问题。 O 下载 JSTL JSTL 是由 JSR-52 专家组在 JCP(www JSTL 标签库 JSTL 是标准标签库,通过多个标签库来暴露其行为。 大纲 转换器和格式化(Converter and Formatter) 验证器 表达式语言(EL) JSTL JSTL 标签库的使用 O 在 JSP 页面中使用 JSTL 库,必须通过以下格式使用 taglib 指令 <%@ taglib uri="uri" prefix="prefix" %> 使用 Core 库 <%@0 码力 | 56 页 | 866.07 KB | 1 年前3
MySQL ZIP Archive版本安装说明[mysqld] #设置3306端⼝口 port = 3306 # 设置mysql的安装⽬目录 basedir=C:\MySQL\mysql-5.7.20-winx64 # 设置mysql数据库的数据的存放⽬目录 datadir=C:\MySQL\mysql-5.7.20-winx64\data # 允许最⼤大连接数 max_connections=200 # 服务端使⽤用的字符集默认为8⽐比特编码的latin1字符集 其他配置操作。 以下是其他常用的MySQL命令行操作: 控制台 mysqld –console 关闭服务器 net stop mysql 卸载MySQL mysqld -remove 4 数据库系统基本配置 结束所有的MySQL进程,包括mysql.exe和mysqld.exe,可以在任务管理器中结束上述进程。 输入mysqld –skip-grant-tables,输入后,其他命令行已 20-winx64\bin>mysqld.exe --skip-grant-tables 在2号命令行窗口中定位到MySQL安装目录的bin目录下,执行mysql.exe,则无密码登录到MySQL数据库,并输出 MySQL命令行操作符。 进行修改密码操作,MySQL命令行输入以下命令: 其中,yourpassword位置即为所设置的MySQL的超级用户root的初始登录密码,请按需设置。 此时0 码力 | 4 页 | 756.23 KB | 1 年前3
Apache Shiro参考手册中文版的设计和 API。 当你遵循本教程时,如果你确实不想编辑文件,你可以得到一个几乎相同的实例应用程序并按照你的意愿引用它。 选择一个位置: 在 Apache Shiro 的版本控制库:https://svn.apache.org/repos/asf/shiro/trunk/samples/quickstart 在 Apache Shiro 的源代码的 samples/quickstart shiro.ini 文件: 如你所见,这个配置基本上建立了一小组静态用户帐户,对于我们的第一个应用程序已经足够了。在后面的章节中, 你将看到我们如何使用更复杂的用户数据源,如关系数据库,LDAP 的 AcitveDirectory,以及更多。 Referencing the Configuration 现在我们已经定义好了一个 INI 文件,我们可以在我们的教程应用程序类中创建 用来进行身份验证和/或授权。SecurityManager 可能配置多个 Realms,但至少有一个是必须的。 Shiro 提供了立即可用的 Realms 来连接一些安全数据源(即目录),如 LDAP,关系数据库(JDBC),文本配 置源,像 INI 及属性文件,以及更多。你可以插入你自己的 Realm 实现来代表自定义的数据源,如果默认地 Realm 不符合你的需求。 像其他内置组件一样,Shiro0 码力 | 92 页 | 1.16 MB | 1 年前3
Java 应用与开发 - MVC 和框架初步知道别人是不是已经曾经实现过类似的功能,到哪里去引用。 3. 突然之间,某个需求发生了变化。于是,每个人蒙头开始全 程替换,还要小心翼翼的,生怕把别人的逻辑改了。 4. 逻辑处理程序需要自己来维护生命周期,对于类似数据库事 务、日志等众多模块无法统一支持。 大纲 Java Web 应用的开发演化 经典 MVC 框架 - Struts 2 本节习题 JSP 方式 O 仅有的一点优势 1. 无需额外的配置文件,无需框架的帮助,即可完成逻辑。 知道别人是不是已经曾经实现过类似的功能,到哪里去引用。 3. 突然之间,某个需求发生了变化。于是,每个人蒙头开始全 程替换,还要小心翼翼的,生怕把别人的逻辑改了。 4. 逻辑处理程序需要自己来维护生命周期,对于类似数据库事 务、日志等众多模块无法统一支持。 大纲 Java Web 应用的开发演化 经典 MVC 框架 - Struts 2 本节习题 JSP 方式 O 仅有的一点优势 1. 无需额外的配置文件,无需框架的帮助,即可完成逻辑。 知道别人是不是已经曾经实现过类似的功能,到哪里去引用。 3. 突然之间,某个需求发生了变化。于是,每个人蒙头开始全 程替换,还要小心翼翼的,生怕把别人的逻辑改了。 4. 逻辑处理程序需要自己来维护生命周期,对于类似数据库事 务、日志等众多模块无法统一支持。 大纲 Java Web 应用的开发演化 经典 MVC 框架 - Struts 2 本节习题 JSP 方式 O 仅有的一点优势 1. 无需额外的配置文件,无需框架的帮助,即可完成逻辑。0 码力 | 51 页 | 837.26 KB | 1 年前3
共 31 条
- 1
- 2
- 3
- 4













