自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(226)
  • 收藏
  • 关注

转载 Spring MVC的国际化

Spring MVC 的国际化是建立在 Java 国际化的基础之上的,Spring MVC 框架的底层国际化与 Java 国际化是一致的,作为一个良好的 MVC 框架,Spring MVC 将 Java 国际化的功能进行了封装和简化,开发者使用起来会更加简单、快捷。由《Java国际化概念和使用介绍》教程可知国际化和本地化应用程序时需要具备以下两个条件:将文本信息放到资源属性文件中。选择和读取正确位置的资源属性文件。下面讲解第二个条件的实现。Spring MVC加载资源属性文件在 Spring

2021-04-29 09:32:24 969

转载 Java国际化概念和使用介绍

国际化是商业软件系统的一个基本要求,因为当今的软件系统需要面对全球的浏览者。国际化的目的就是根据用户的语言环境的不同向用户输出与之相应的页面,以示友好。程序国际化已成为 Web 应用的基本要求。随着网络的发展,大部分 Web 站点面对的已经不再是本地或者本国的浏览者,而是来自全世界各国、各地区的浏览者,因此国际化成为了 Web 应用不可或缺的一部分。Java 国际化的思想是将程序中的信息放在资源文件中,程序根据支持的国家及语言环境读取相应的资源文件。资源文件是 key-value 对,每个资源文件中的k

2021-04-29 09:32:16 1075

转载 Spring MVC JSR-303验证框架之Hibernate-Validator

对于 JSR 303 验证,目前有两个实现,一个是 Hibernate Validator,一个是 Apache BVal。本教程采用的是 Hibernate Validator,注意它和 Hibernate无关,只是使用它进行数据验证。1. 下载与安装 Hibernate Validator用户可以通过地址“https://sourceforge.net/projects/hibernate/files/hibernate-validator/”下载 Hibernate Validator,本教程选择

2021-04-29 09:32:08 1130

转载 Spring MVC验证器应用实例(超详细)

本节使用一个应用 springMVCDemo08 讲解 Spring 验证器的编写及使用。该应用中有一个数据输入页面 addGoods.jsp,效果如图 1 所示。有一个数据显示页面 goodsList.jsp,效果如图 2 所示。编写一个实现 org.springframework.validation.Validator 接口的验证器类 GoodsValidator,验证要求如下:商品名和商品详情不能为空。商品价格在 0 到 100。创建日期不能在系统日期之后。根据上述要求,按照如下

2021-04-29 09:31:50 387

转载 Spring MVC验证器:Validator接口和ValidationUtils类

本节主要介绍创建自定义 Spring 验证器时需要实现的 Validator 接口和工具类 ValidationUtils。Validator接口创建自定义 Spring 验证器需要实现 org.springframework.validation.Validator 接口,该接口有两个接口方法:boolean supports(Class<?> klass)void validate(Object object,Errors errors)当 supports 方法返回 true

2021-04-29 09:31:31 681

转载 Spring MVC数据验证简介

用户的输入一般是随意的,为了保证数据的合法性,数据验证是所有 Web 应用必须处理的问题。在 Spring MVC 框架中有以下两种方法可以验证输入数据:利用 Spring 自带的验证框架。利用 JSR 303 实现。数据验证分为客户端验证和服务器端验证,客户端验证主要是过滤正常用户的误操作,通过 JavaScript 代码完成。服务器端验证是整个应用阻止非法数据的最后防线,通过在应用中编程实现。客户端验证在大多数情况下,使用 JavaScript 进行客户端验证的步骤如下:编写验证函数

2021-04-29 09:31:25 191

转载 Spring MVC拦截器实现用户登录权限验证案例

本节将通过拦截器来完成一个用户登录权限验证的 Web 应用 springMVCDemo07,具体要求如下:只有成功登录的用户才能访问系统的主页面main.jsp,如果没有成功登录而直接访问主页面,则拦截器将请求拦截,并转发到登录页面 login.jsp。当成功登录的用户在系统主页面中单击“退出”链接时回到登录页面。具体实现步骤如下:1)创建应用创建 Web 应用 springMVCDemo07,并将 Spring MVC 相关的 JAR 包复制到 lib 目录中。2)创建 POJO 类在 spri

2021-04-29 09:31:18 1411

转载 Spring MVC拦截器的执行流程

本节我们主要讲解 SpringMVC 拦截器的执行流程。分两部分介绍,首先介绍单个拦截器执行流程然后介绍多个拦截器的执行流程。单个拦截器的执行流程在配置文件中如果只定义了一个拦截器,程序将首先执行拦截器类中的 preHandle 方法,如果该方法返回 true,程序将继续执行控制器中处理请求的方法,否则中断执行。如果 preHandle 方法返回 true,并且控制器中处理请求的方法执行后、返回视图前将执行 postHandle 方法,返回视图后才执行afterCompletion 方法。下面通过一个

2021-04-29 09:31:09 365

转载 Spring MVC拦截器(Interceptor)的配置及使用

在开发一个网站时可能有这样的需求:某些页面只希望几个特定的用户浏览。对于这样的访问权限控制,应该如何实现呢?拦截器就可以实现上述需求。在Struts 2 框架中,拦截器是其重要的组成部分,Spring MVC 框架也提供了拦截器功能。Spring MVC 的拦截器(Interceptor)与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。拦截器的定义在 Spring MVC 框架中定义一

2021-04-29 09:30:58 515

转载 SpringBoot是什么?SpringBoot的优缺点有哪些?

随着动态语言的流行(Ruby、Groovy、Scala、Node.js),Java 的开发显得格外的笨重,繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。在上述环境下,Spring Boot 应运而生。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用 Spring Boot 很容易创建一个独立运行(运行 jar,内嵌 Servlet 容器)、准生产级别的基于 Spring 框架的项目,使用 Spring

2021-04-29 09:26:46 322

转载 Spring MVC JSON数据交互(附带实例)

Spring MVC 在数据绑定的过程中需要对传递数据的格式和类型进行转换,它既可以转换 String 等类型的数据,也可以转换 JSON 等其他类型的数据。本节将针对 Spring MVC 中 JSON 类型的数据交互进行讲解。JSON 概述JSON(JavaScript Object Notation, JS 对象标记)是一种轻量级的数据交换格式。与 XML 一样,JSON 也是基于纯文本的数据格式。它有对象结构和数组结构两种数据结构。1)对象结构对象结构以“{”开始、以“}”结束,中间部分由

2021-04-28 15:01:53 963

转载 Spring MVC数据绑定和表单标签的应用(附带实例)

为了让读者进一步学习数据绑定和表单标签,本节给出了一个应用范例 springMVCDemo04。该应用中实现了 User 类属性和 JSP 页面中表单参数的绑定,同时在 JSP 页面中分别展示了 input、textarea、checkbox、checkboxs、select 等标签。应用的相关配置在 springMVCDemo04 应用中需要使用 JSTL,因此不仅需要将 Spring MVC 的相关 JAR 包复制到应用的 WEN-INF/lib 目录下,还需要从 Tomcat 的webapps\e

2021-04-28 14:42:53 220

转载 Spring MVC的表单标签库详解

表单标签库中包含了可以用在 JSP 页面中渲染 HTML 元素的标签。在 JSP 页面使用 Spring 表单标签库时,必须在 JSP 页面开头处声明 taglib 指令,指令代码如下:<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>在表单标签库中有 form、input、password、hidden、textarea、checkbox、checkboxes、radiobuttton、rad

2021-04-28 11:44:59 436

转载 Spring MVC Formatter(数据格式化)详解

Spring MVC 框架的 Formatter<T> 与 Converter<S,T> 一样,也是一个可以将一种数据类型转换成另一种数据类型的接口。不同的是,Formatter<T>的源数据类型必须是 String 类型,而 Converter<S,T> 的源数据类型是任意数据类型。在 Web 应用中由 HTTP 发送的请求数据到控制器中都是以 String 类型获取,因此在 Web 应用中选择 Formatter<T> 比选择 Convert

2021-04-28 11:28:52 629

转载 Spring MVC Converter(类型转换器)详解

Spring MVC 框架的 Converter<S,T> 是一个可以将一种数据类型转换成另一种数据类型的接口,这里 S 表示源类型,T 表示目标类型。开发者在实际应用中使用框架内置的类型转换器基本上就够了,但有时需要编写具有特定功能的类型转换器。内置的类型转换器在 Spring MVC 框架中,对于常用的数据类型,开发者无须创建自己的类型转换器,因为 Spring MVC 框架有许多内置的类型转换器用于完成常用的类型转换。Spring MVC 框架提供的内置类型转换包括以下几种类型。1)

2021-04-28 11:13:24 2207 1

转载 Spring MVC类型转换的意义

本节以一个简单应用(JSP+Servlet)为示例来介绍类型转换的意义。如图 1 所示的添加商品页面用于收集用户输入的商品信息,商品信息包括商品名称(字符串类型 String)、商品价格(双精度浮点类型 double)、商品数量(整数类型 int)。addGoods.jsp页面的代码如下:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYP

2021-04-28 10:59:42 173

转载 Spring MVC中@ModelAttribute注解的使用

通过 org.springframework.web.bind.annotation.ModelAttribute 注解类型可经常实现以下两个功能:1)绑定请求参数到实体对象(表单的命令对象)@RequestMapping("/register")public String register(@ModelAttribute("user") UserForm user) { if ("zhangsan".equals(uname) && "123456".equals(upass

2021-04-28 10:55:38 295

转载 Spring MVC应用@Autowired和@Service进行依赖注入

在前面学习的控制器中并没有体现 MVC 的 M 层,这是因为控制器既充当 C 层又充当 M 层。这样设计程序的系统结构很不合理,应该将 M 层从控制器中分离出来。Spring MVC 框架本身就是一个非常优秀的 MVC 框架,它具有依赖注入的优点,可以通过 org.springframework.beans.factory. annotation.Autowired注解类型将依赖注入到一个属性(成员变量)或方法,例如:@Autowiredpublic UserService userService;

2021-04-28 10:47:43 433

转载 Spring MVC的转发与重定向

重定向是将用户从当前处理请求定向到另一个视图(例如 JSP)或处理请求,以前的请求(request)中存放的信息全部失效,并进入一个新的 request 作用域;转发是将用户对当前处理的请求转发给另一个视图或处理请求,以前的 request 中存放的信息不会失效。转发是服务器行为,重定向是客户端行为。1)转发过程客户浏览器发送 http 请求,Web 服务器接受此请求,调用内部的一个方法在容器内部完成请求处理和转发动作,将目标资源发送给客户;在这里转发的路径必须是同一个 Web 容器下的 URL,其不

2021-04-28 10:42:01 190

转载 MySQL 数据库入门

MySQL 是一个关系型数据库,使用 SQL 语言进行增删改查操作,目前属于 Oracle 旗下的产品。MySQL 数据库开源免费,能够跨平台,支持分布式,性能也不错,可以和 PHP、Java 等 Web 开发语言完美配合,非常适合中小型企业作为 Web 数据库(网站数据库)。这套 MySQL 教程通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读者快速入门,是你学习 MySQL 的葵花宝典。简单来说,数据库就是一个存储数据的仓库,它将数据按照特定的规律存储在磁盘上。为了方便用户组织和管理数据

2021-04-28 10:36:18 164

转载 Spring MVC获取参数的几种常见方式

Controller 接收请求参数的方式有很多种,有的适合 get 请求方式,有的适合 post 请求方式,有的两者都适合。下面分别介绍这些方式,读者可以根据实际情况选择合适的接收方式。通过实体 Bean 接收请求参数通过一个实体 Bean 来接收请求参数,适用于 get 和 post 提交请求方式。需要注意的是,Bean 的属性名称必须与请求参数名称相同。下面通过具体应应用 springMVCDemo02 讲解“通过实体 Bean 接收请求参数”。1)创建首页面在 springMVCDemo02

2021-04-27 23:56:11 1039

转载 Spring MVC中@Controller和@RequestMapping注解详解

在《第一个Spring MVC应用》教程中创建了两个传统风格的控制器,它们是实现 Controller 接口的类。传统风格的控制器不仅需要在配置文件中部署映映射,而且只能编写一个处理方法,不够灵活。使用基于注解的控制器具有以下两个优点:在基于注解的控制器类中可以编写多个处理方法,进而可以处理多个请求(动作),这就允许将相关的操作编写在同一个控制器类中,从而减少控制器类的数量,方便以后的维护。基于注解的控制器不需要在配置文件中部署映射,仅需要使用 RequestMapping 注释类型注解一个方法进行请

2021-04-27 23:45:44 392

Spring MVC视图解析器

Spring 视图解析器是 Spring MVC 中的重要组成部分,用户可以在配置文件中定义 Spring MVC 的一个视图解析器(ViewResolver),示例代码如下:<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" > <!--前缀--> <property name="prefix" value="/WEB-INF/jsp/"/>

2021-04-27 23:36:29 50

转载 Spring MVC处理用户请求的完整流程

Spring MVC 框架是高度可配置的,包含多种视图技术,例如 JSP 技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不关心使用的视图技术,也不会强迫开发者只使用 JSP 技术,但教程中使用的视图是 JSP,本节主要介绍 Spring MVC 框架处理用户请求的完整流程和处理中包含的 4 个接口。Spring MVC 工作流程Spring MVC 框架主要由 DispatcherServlet、处理器映射、控制器、视图解析器、视图组成,其工作原理如图 1 所

2021-04-27 23:28:28 219

转载 MVC设计模式简介

MVC 设计不仅限于 Java Web 应用,还包括许多应用,比如前端、PHP、.NET 等语言。之所以那么做的根本原因在于解耦各个模块。MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。模型:用于存储数据以及处理用户请求的业务逻辑。视图:向控制器提交数据,显示模型中的数据。控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。基于 Servlet 的 MVC 模式的具体实现如下。模

2021-04-27 23:20:44 105

转载 Spring MVC【入门】就这一篇!

MVC 设计概述在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者JavaBean 来进行处理,我们称之为 Model1:出现的弊端:JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起要求开发者不仅要掌握 Java ,还要有高超的前端水平前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试代码难以复用正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP + J

2021-04-27 23:09:38 137

转载 Spring MVC 自定义验证器示例

在任何 spring web mvc 应用程序中,我们经常必须处理表单。应用程序首先显示一个表单,然后用户填写该表单并将其提交给服务器。在服务器上,应用程序需要捕获表单输入并处理输入(例如,存储在数据库中)并返回成功视图。在此 spring mvc 示例中,我们将学习显示表单,然后学习处理提交的表单字段。在此示例中,我们将创建具有添加员工功能的员工管理模块。它具有以下功能:在初始页面加载时显示空白表格如果提交的表单具有空字段,则显示错误消息成功提交表单后,重定向到另一个屏幕,显示成功消息让我

2021-04-27 20:58:36 201

转载 Spring @RequestMapping注解示例

在 spring mvc hello world 应用程序中,我们看到了具有端到端功能(不包括任何数据库访问)的非常基本的员工管理应用程序。 在学习spring mvc 模块的下一步中,我将提供@RequestMapping注解的一些示例,以说明如何使用@RequestMapping以不同的方式将 URL映射到控制器方法。我再次使用与 Spring MVC Hello World 应用程序相同的代码库,并使用@RequestMapping注解仅更改控制器类。1)仅方法级别的@RequestMapping注

2021-04-27 19:27:09 170

转载 Spring 访问数据库

数据库基本上是现代应用程序的标准存储,绝大多数程序都把自己的业务数据存储在关系数据库中,可见,访问数据库几乎是所有应用程序必备能力。我们在前面已经介绍了Java程序访问数据库的标准接口JDBC,它的实现方式非常简洁,即:Java标准库定义接口,各数据库厂商以“驱动”的形式实现接口。应用程序要使用哪个数据库,就把该数据库厂商的驱动以jar包形式引入进来,同时自身仅使用JDBC接口,编译期并不需要特定厂商的驱动。使用JDBC虽然简单,但代码比较繁琐。Spring为了简化数据库访问,主要做了以下几点工作:

2021-04-27 00:01:17 755

转载 打包Spring Boot应用

我们在Maven的使用插件一节中介绍了如何使用maven-shade-plugin打包一个可执行的jar包。在Spring Boot应用中,打包更加简单,因为Spring Boot自带一个更简单的spring-boot-maven-plugin插件用来打包,我们只需要在pom.xml中加入以下配置:<project ...> ... <build> <plugins> <plugin>

2021-04-26 22:08:23 358

转载 使用开发者工具

在开发阶段,我们经常要修改代码,然后重启Spring Boot应用。经常手动停止再启动,比较麻烦。Spring Boot提供了一个开发者工具,可以监控classpath路径上的文件。只要源码或配置文件发生修改,Spring Boot应用可以自动重启。在开发阶段,这个功能比较有用。要使用这一开发者功能,我们只需添加如下依赖到pom.xml:<dependency> <groupId>org.springframework.boot</groupId>

2021-04-26 22:02:21 69

转载 第一个Spring Boot应用

要了解Spring Boot,我们先来编写第一个Spring Boot应用程序,看看与前面我们编写的Spring应用程序有何异同。我们新建一个springboot-hello的工程,创建标准的Maven目录结构如下:其中,在src/main/resources目录下,注意到几个文件:application.yml这是Spring Boot默认的配置文件,它采用YAML格式而不是.properties格式,文件名必须是application.yml而不是其他名称。YAML格式比key=value格

2021-04-26 21:54:29 149

转载 Spring Boot开发

我们已经在前面详细介绍了Spring框架,它的主要功能包括IoC容器、AOP支持、事务支持、MVC开发以及强大的第三方集成功能等。那么,Spring Boot又是什么?它和Spring是什么关系?Spring Boot是一个基于Spring的套件,它帮我们预组装了Spring的一系列组件,以便以尽可能少的代码和配置来开发基于Spring的Java应用程序。以汽车为例,如果我们想组装一辆汽车,我们需要发动机、传动、轮胎、底盘、外壳、座椅、内饰等各种部件,然后把它们装配起来。Spring就相当于提供了一系

2021-04-26 21:09:32 64

转载 Spring 使用AOP

AOP是Aspect Oriented Programming,即面向切面编程。那什么是AOP?我们先回顾一下OOP:Object Oriented Programming,OOP作为面向对象编程的模式,获得了巨大的成功,OOP的主要功能是数据封装、继承和多态。而AOP是一种新的编程方式,它和OOP不同,OOP把系统看作多个对象的交互,AOP把系统分解为不同的关注点,或者称之为切面(Aspect)。要理解AOP的概念,我们先用OOP举例,比如一个业务组件BookService,它有几个业务方法:

2021-04-26 16:48:43 198

转载 Java 多线程

多线程是Java最基本的一种并发模型,本章我们将详细介绍Java多线程编程。多线程基础现代操作系统(Windows,macOS,Linux)都可以执行多任务。多任务就是同时运行多个任务,例如:CPU执行代码都是一条一条顺序执行的,但是,即使是单核cpu,也可以同时运行多个任务。因为操作系统执行多任务实际上就是让CPU对多个任务轮流交替执行。例如,假设我们有语文、数学、英语3门作业要做,每个作业需要30分钟。我们把这3门作业看成是3个任务,可以做1分钟语文作业,再做1分钟数学作业,再做1分钟英语作业

2021-04-26 11:38:27 61

转载 Java IO

IO是指Input/Output,即输入和输出。以内存为中心:Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。为什么要把数据读到内存才能处理这些数据?因为代码是在内存中运行的,数据也必须读到内存,最终的表示方式无非是byte数组,字符串等,都必须存放在内存里。从Java代码来看,输入实际上就是从外部,例如,硬盘上的某个文件,把内容读到内存,并且以Java提供的

2021-04-25 17:36:06 82

转载 JVM基础系列开篇:为什么要学虚拟机?

跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看。所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试。但我经过了几年的学习和实战,我发现其实学习虚拟机并不仅仅在于面试,而在于更深入地理解 Java 这门语言,以及为未来排查线上问题打下基础。先聊聊我的第一个观点:学习 Java 虚拟机能深入地理解 Java 这门语言。对于刚刚工作一两年的朋友来说,各个 API 都没用熟,自然不会去深入研究 Java 中的各种细节。但对于工作了三年以后的朋友来说,很多时候你要解

2021-04-25 14:27:24 99

转载 Java 集合

本节我们将介绍Java的集合类型。集合类型也是Java标准库中被使用最多的类型。Java集合简介什么是集合(Collection)?集合就是“由若干个确定的元素所构成的整体”。例如,5只小兔构成的集合:在数学中,我们经常遇到集合的概念。例如:有限集合:一个班所有的同学构成的集合;一个网站所有的商品构成的集合;…无限集合:全体自然数集合:1,2,3,……有理数集合;实数集合;…为什么要在计算机中引入集合呢?这是为了便于处理一组类似的数据,例如:计算所有同学的总成

2021-04-24 22:31:06 172

转载 Java 泛型

泛型是一种“代码模板”,可以用一套代码套用各种类型。什么是泛型在讲解什么是泛型之前,我们先观察Java标准库提供的ArrayList,它可以看作“可变长度”的数组,因为用起来比数组更方便。实际上ArrayList内部就是一个Object[]数组,配合存储一个当前分配的长度,就可以充当“可变数组”:public class ArrayList { private Object[] array; private int size; public void add(Object e

2021-04-24 16:21:49 85

转载 第二章 Java多线程入门类和接口

2.1 Thread类和Runnable接口上一章我们了解了操作系统中多线程的基本概念。那么在Java中,我们是如何使用多线程的呢?首先,我们需要有一个“线程”类。JDK提供了Thread类和Runnable接口来让我们实现自己的“线程”类。继承Thread类,并重写run方法;实现Runnable接口的run方法;2.1.1 继承Thread类先学会怎么用,再学原理。首先我们来看看怎么用Thread和Runnable来写一个Java多线程程序。首先是继承Thread类:public c

2021-04-23 23:39:18 93

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除