Java EE学习日记2

来源:互联网 发布:剑网3万花捏脸数据 编辑:程序博客网 时间:2024/06/16 05:50

1. @RequestParam

解析:使用@RequestParam来映射请求参数,其中,value表示请求参数的参数名,required表示参数是否必须(默为true),defaultValue表示请求参数的默认值。


2. @RequestHeader

解析:使用@RequestHeader绑定请求报头的属性值,通过@RequestHeader即可将请求头中的属性值绑定到处理方的参数中。


3. @CookieValue

解析:使用@CookieValue绑定请求中的Cookie值,即@CookieValue可让处理方法参数绑定某个Cookie值。


4. 使用POJO对象绑定请求参数值

解析:Spring MVC会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值,并且支持级联属性。


5. MVC的Handler方法可以接受哪些Servlet API类型的参数? 

解析:HttpServletRequest;HttpServletResponse;HttpSession;java.security.Principal;Locale;InputStream;OutputStream;Reader;Writer。


6. Spring MVC处理模型数据

解析:

(1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。

(2)参数为org.springframework.ui.Model、org.springframework.ui.ModelMap或java.util.Map时,Map中的数据会自动添加到模型中。

(3)@SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性。

(4)ModelAttribute:带@ModelAttribute注解的方法会将其输入的或创建的参数对象添加到Model对象中


7. <mvc:resources/>

解析:<mvc:resources/>元素则指示Spring MVC哪些静态资源需要单独处理,即不通过dispatcher servlet。


8. 重定向和转发操作

解析:

(1)redirect:重定向操作。

(2)forward:转发操作。


9. Spring MVC数据绑定流程

解析:Spring MVC会将来自Web页面的请求和响应数据与Controller中对应处理方法的入参进行绑定,即数据绑定。

如下所示:

(1)Spring MVC主框架将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象。

(2)DataBinder对象调用装配在Spring MVC上下文中的ConversionService组件进行数据类型转换,数据格式化工作,将Servlet中的请求信息填充到入参对象中。

(3)调用Validator组件对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定结果BindingData对象。

(4)Spring MVC抽取BindingResult中的入参对象和校验错误对象,将它们赋给处理方法的相应入参。


10. Servlet API包

解析:

(1)javax.servlet:包含定义Servlet和Servlet容器之间契约的类和接口。

(2)javax.servlet.http:包含定义HTTP Servlet和Servlet容器之间契约的类和接口。

(3)javax.servlet.annotation:包含标注Servlet、filter、listener的标注,它还为被标注元件定义元数据。

(4)javax.servlet.descriptor:包含提供程序化登录Web应用程序配置信息的类型。


11. Servlet接口

解析:

(1)void init(ServletConfig config) throws ServletException:当请求Servlet时,Servlet容器会第一时间调用这个方法。这个方法在后续请求中不会再被调用。利用这个方法调用初始化代码。调用这个方法时,Servlet容器会传入一个ServletConfig。一般来说,会将ServletConfig赋给一个类级变量,因此这个对象可以通过Servlet类的其它点来使用。

(2)void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException:每当请求Servlet时,Servlet容器就会调用这个方法。编写代码时,假设Servlet要在这里被请求。第一次请求Servlet时,Servlet容易调用init方法和Service方法。后续请求将只调用Service方法。

(3)void destroy():当要销毁Servlet时,Servlet容器就会调用这个方法。当要卸载应用程序,或者当要关闭Servlet容器时,就会发生这种情况。一般会在这个方法中编写清除代码。

(4)java.lang.String getServletInfo():这个方法返回Servlet的描述。可以返回有用或为null的任意字符串。

(5)ServletConfig getServletConfig:这个方法会返回由Servlet容器传给init方法的ServletConfig。但为了让

getServletConfig返回一个非null值,必须将传给init方法的ServletConfig赋给一个类级变量。


12. JSP API包

解析:

(1)javax.servlet.jsp:包含用于Servlet/JSP容器将JSP页面为Servlet的核心类和接口。其中的两个重要成员是JspPage和HttpJspPage接口。所有的JSP页面实现类必须实现JspPage或HttpJspPage接口。

(2)javax.servlet.jsp.tagext:包括用于开发自定义标签的类型。

(3)javax.el:提供了统一表达式语言的API。

(4)javax.servlet.jsp.el:提供了一组必须右Servlet/JSP容器支持,以便在JSP页面中使用表达式语言的类。


13. JSP隐式对象

解析:

(1)request:javax.servlet.http.HttpServletRequest

(2)response:javax.servlet.http.HttpServletResponse

(3)out:javax.servlet.jsp.JspWriter

(4)session:javax.servlet.http.HttpSession

(5)application:javax.servlet.ServletContext

(6)config:javax.servlet.ServletConfig

(7)pageContext:javax.servlet.jsp.PageContext

(8)page:javax.servlet.jsp.HttpJspPage

(9)exception:java.lang.Throwable


14. mvc:annotation-driven

解析:

(1)<mvc:annotation-driven/>会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdapter与ExceptionHandlerExceptionResolver三个bean。

(2)支持使用ConversionService实例对表单参数进行类型转换。

(3)支持使用@NumberFormat、@DateTimeFormat注解完成数据类型的格式化。

(4)支持使用@Valid注解对JavaBean实例进行JSR 303验证。

(5)支持使用@RequestBody和@ResponseBody注解。


15. @InitBinder

(1)由@InitBinder标识的方法,可以对WebDataBinder对象进行初始化。WebDataBinder是DataBinder的子类,用于完成由表单字段到JavaBean属性的绑定。

(2)InitBinder方法不能有返回值,它必须声明为void。

(3)InitBinder方法的参数通常是WebDataBinder。


16. Bean Validation中内置的constraint

解析:

(1)@Null:被注释的元素必须为null。

(2)@NotNull:被注释的元素必须不为null。

(3)@AssertTrue:被注释的元素必须为true。

(4)@AssertFalse:被注释的元素必须为false。

(5)@Min(value):被注释的元素必须是一个数字,其值必须大于等于指定的最小值。

(6)@Max(value):被注释的元素必须是一个数字,其值必须小于等于指定的最大值。

(7)@DecimalMin(value):被注释的元素必须是一个数字,其值必须大于等于指定的最小值。

(8)@DecimalMax(value):被注释的元素必须是一个数字,其值必须小于等于指定的最大值。

(9)@Size(max, min):被注释的元素的大小必须在指定的范围内。

(10)@Digits (integer, fraction):被注释的元素必须是一个数字,其值必须在可接受的范围内。

(11)@Past:被注释的元素必须是一个过去的日期。

(12)@Future:被注释的元素必须是一个将来的日期。

(13)@Pattern(value):被注释的元素必须符合指定的正则表达式。


17. Hibernate Validator附加的constraint

解析:

(1)@Email:被注释的元素必须是电子邮箱地址。

(2)@Length:被注释的字符串的大小必须在指定的范围内。

(3)@NotEmpty:被注释的字符串的必须非空。

(4)@Range:被注释的元素必须在合适的范围内。


18. Jackson

解析:

Jackson提供了两种不同的JSON解析器,如下所示:

(1)ObjectMapper:把JSON解析到自定义的Java类中,或者解析到一个Jackson指定的树形结构中。

(2)Jackson JsonParser:一种“拉式”解析器,每次解析一组JSON数据。

Jackson也包含了两种不同的JSON生成器,如下所示:

(1)ObjectMapper:把自定义的Java类,或者一个Jackson指定的树形结构生成为JSON文件。

(2)Jackson JsonGenerator:每次只生成一组JSON数据。


19. HttpMessageConverter<T>

解析:它是Spring 3.0新添加的一个接口,负责将请求信息转换为一个对象(类型为T),将对象(类型为T)输出为响应信息。如下所示:

(1)使用@RequestBody/@ResponseBody对处理方法进行标注。

(2)使用HttpEntity<T>/ResponseEntity<T>作为处理方法的入参或返回值。


20. I18N标签库

解析:I18N标签库提供了11个标签,从功能上可以划分为3类,如下所示:

(1)数字日期格式化:formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。

(2)读取消息资源:bundle标签、message标签、setBundle标签。

(3)国际化:setlocale标签、requestEncoding标签。

说明:JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary),引入该标签库的方法为:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>。


21. SimpleMappingExceptionResolver

解析:如果希望对所有异常进行统一处理,可以使用SimpleMappingExceptionResolver,它将异常类名映射为视图名,即发生异常时使用对应的视图报告异常。


22. EhCache

解析:EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。


23. gradle

解析:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主,当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。


24. JFreeChart

解析:JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。


25. JAX-RS

解析:JAX-RS是JAVA EE6引入的一个新技术。JAX-RS即Java API for RESTful Web Services,是一个Java编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java注解来简化Web服务的客户端和服务端的开发和部署。


参考文献:

[1] Spring MVC学习指南

[2] Jersey:https://jersey.github.io/index.html

[3] Jetty:https://www.eclipse.org/jetty/download.html