个人用Java EE重点(待补充)

本文详细介绍了Java EE的核心概念,包括服务器/应用服务器、容器、三层架构、Web接口、安全机制等内容。深入探讨了Servlet、JAX-RS、WebSocket、EJB、JDBC等关键技术和API的使用,为理解及开发Java EE应用提供了全面指导。
摘要由CSDN通过智能技术生成

一、Java EE(Java 企业版)概述

Java EE 依赖于 Java SE,SE提供语言基础,EE是SE的扩展
可持久化实体类与企业JavaBeans
在这里插入图片描述

JAVA EE 服务器/应用服务器

实现Java EE API,并提供Java EE服务,以容器的形式提供服务。

容器

完成具体功能的工具以组建的形式“装入”一个容器之中(类似封装),保证耦合度

Web容器

Web组件与Web服务器之间的接口,提供访问上下文数据的接口

EJB容器(对企业Java Beans管理)

三层架构(通过依赖输入实现不同业务功能之间的分离)

表示层(Web,转发和指派)

负责对客户的响应,并进行一定的业务控制

业务层(EJB,响应请求)

主要负责对业务数据的具体控制和响应,并负责对具体数据发起编辑请求

数据持久层(Entity)

主要负责对数据库系统的控制和管理,业务层的数据请求都需要通过持久层的处理来完成与具体数据库数据的交互

Web接口

Servlet(请求/响应,HttpServlet)
JavaServerPages(JSP,Html中嵌入java代码)
JavaServer Faces(JSF,本质还是Servlet)
Java Web Service
Java WebSocket(服务器端主动向可无端推送信息,轮询效率高

应用逻辑

有状态会话Bean由EJB初始化),适用于为每个连接的客户保存应用状态
无状态会话Bean由Java EE 容器创建),可应用与大规模分布式系统
单例会话Bean(仅会被创建一次),为所有客户提供公共数据
消息驱动Bean:通过异步发送/响应信息来调用功能
不使用EJB的Java EE,通常需要框架支持
SpringBoot,SpringMVC,等等。。。

存储数据

JPA(定义 “对象-关系” 映射的API)
JDBC API( 传统方式,直接访问数据库
Java Transaction API(将多个活动合并为原子操作

与其他系统的接口

Java Web services APIs
Java Message Service(JMS, 异步消息
Java EE Connector Architecture(JCA

保障安全方式

Java annotation
静态配置文件
运行时API调用

打包&发布

Web组件打包(.war)
Enterprise Bean 打包(.jar)
两者整合为一个:(.ear)

二、Java EE 入口层(Web层)

Java Servlet与Web应用

HTTP协议(超文本传输协议)

基于TCP的客户服务器通信协议(请求-响应

  1. 请求方式
    GET、POST、PUT、DELETE
    HEAD、TRACE、OPTIONS、CONNECT、PATCH
  2. 常用HTTP状态码
    200 OK
    201 Created
    202 Accepted
    301 Moved Permanently
    302 Found
    400 Bad Request
    401 Unauthorized
    403 Forbidden
    404 Not Found
    500 Internal Server Error

Servlet(处理 HTTP 交互的 Java 对象)

javax.servlet.http.HttpServlet

生命周期
  1. void init(ServletConfig config):初始化
  2. void doXXX(HttpServletRequest request, HttpServletResponse response)
    void service(HttpServletRequest request, HttpServletResponse response):处理请求
  3. void destroy():摧毁Servlet

service():处理所有HTTP请求
(public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException,下同)
doGet():处理所有Get请求,下同
doPost():处理所有Post请求
doHead()
doOptions()
doPut()
doTrace()

将 Servlet 发布到 Web 容器(annotation)
  1. @WebServlet(name = “XXX”, urlPatterns = {"/xxx"})
    public class TemplateServlet extends HttpServlet {
    //…
    }
  2. 在 web.xml 中描述
<servlet>
  	<servlet-name>XXX</servlet-name>
  	<servlet-class>Servlet的位置</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>XXX</servlet-name>//name要对应的上
  	<url-pattern>/xxx</url-pattern>//路径
  </servlet-mapping>

使用时: http://<hostname:port>/<context-path>/<url-pattern>

常用语句
request.getParameter("xxx")//获取Param参数
ServletContext servletContext=request.getServletContext();
//获取ServletContext

有时可以编写一个handle(request,response)方法,使其完成所有工作,而只需要在doGet、doPost方法中调用之即可。

容器内Servlet的数量

使用一个 Servlet 实例为所有请求提供服务。
使用Servlet 池为所有请求提供服务。
每个 Servlet 可以同时为多个客户服务。
每个 Servlet 可以由容器实例化多次。
开发时要注意Servlet并发访问带来的问题!

ServletContext(Servlet与容器通信时所使用的方法)

每个Java 虚拟机上的每个 Web 应用都有一个Context,存储整个应用范围内的全局数据。

public Object getAttribute(String name)
public Enumeration<String> getAttributeNames()
public void removeAttribute(String name)
public void setAttribute(String name, Object value)

HttpSession(一个客户访问 Web 应用时所经历的一系列交互行为)

提供了在用户访问应用时标识用户的方法,常用语存储客户的会话信息

public Object getAttribute(String name)
public Enumeration<String> getAttributeNames()
public void removeAttribute(String name)
public void setAttribute(String name, Object value)
维护方式
  1. 支持Cookie的客户端
    sessionID通过cookie保存在客户端,客户每次
    访问服务器时,附上包含了sessionID的cookie 。
  2. 不支持Cookie的客户端
    使用 URL rewriting 技术。容器每次返回客户端链接
    时,都把sessionID作为URL的查询字符串附上

RequestDispatcher(带参转发)

定义一个对象,接收来自客户端的请求,并转发至服务器上的任意资源

public void forward(ServletRequest request, ServletResponse response)
throws ServletException, IOException
public void include(ServletRequest request, ServletResponse response)
throws ServletException, IOException

Web应用

Web 应用是Web 资源和组件的集合。这些资源和组件被打包在WAR文件中,以便于发布到Web 容器中。
在这里插入图片描述

装配动态Web页面(JavaServer Faces)

JSF是Java EE中基于组件来构建Web应用界面的规范同时,也是服务器端构建 UI 的 MVC 框架。(Apache MyFaces)

主要功能

  1. 一组常用 UI 组件集合
  2. 连接 UI 状态和应用状态的工作机制
  3. 页面导航机制
  4. 提供多种扩展机制

组成

  1. XHTML 页面(可视界面部分)
  2. Java 类(定义应用数据、在应用和界面之间的数据交互提供中介)
  3. JSF 元数据(处理 XHTML 页面和 JavaBeans, 由 Java 标注和 XML 文档组成)
    在这里插入图片描述
    在这里插入图片描述

JavaBeans代码示例:

@Named(value = "myHelloBean")
@RequestScoped
public class HelloBean {
   
 private String name = "dear reader";
 
 public void setName(String name) {
   
 	this.name = name;
 }
 
 public String getName() {
   
 	return this.name;
 } 
}

XHTML代码示例:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
 	xmlns:h="http://xmlns.jcp.org/jsf/html"
 	xmlns:f="http://xmlns.jcp.org/jsf/core">
	 <head>
	 	<title>Simplest JSF Page</title>
	 </head>
	 <body>
	 	<div align="center">
	 		<br></br>
	 		<h:form action="xxx">
	 			<h:inputText value="#{myHelloBean.name}"/>
	 		</h:form>
	 		<br></br>
	 		Hello to you, #{myHelloBean.name}!
	 	</div>
	 </body>
</html>

在这里插入图片描述

JSF tags

** 只能在XHTML的<html>中使用 **
格式:
<html xmlns:前缀名=“地址”>

UI组件:
<html xmlns:h=“http://xmlns.jcp.org/jsf/html”>
提供最常见的组件,如Button,HyperLink(超链接),Table
<h:commandButton>
<h:commandLink>
<h:dataTable>,<h:column>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值