JAVAEE复习(第一、二部分)

第1部分 开发环境安装和配置

01.Java EE应用概述

Java技术的3个版本

Java技术
JavaME
JavaSE
JavaEE
  • JavaME:Jave Micro Edition,Java技术微型版,为小型设备、独立设备、互联移动设备、嵌入式设备程序开发而设计。
  • JavaSE:Java Standard Edition,Java 技术标准版,以界面程序、Java小程序和其它一些典型的应用为目标。
  • JavaEE:Java Enterprise Edition,Java技术企业版,以服务器端程序和企业软件的开发为目标。

Java EE应用分层

  • Domain Object(领域对象、持久化)层:此层由系列的POJO(Plain Old Java Object,普通的、传统Java对象)组成,这些对象是该系统的Domain Object。
  • DAO(Data Access Object数据访问对象)层:此层由系列的DAO组件组成,这些DAO实现了对数据库的增加、查询、更新和删除(CRUD)等原子操作。
  • 业务逻辑层:此层由系列的业务逻辑对象组成,这些业务逻辑对象的实现了系统所需要的业务逻辑方法。
  • 控制器层:此层由系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求。
  • 表现层:此层由系列的JSP页面、Velocity页面、PDF文档视图组件组成。此层负责收集用户请求,并将显示处理结果。
提供持久化支持
提供数据访问服务
提供业务逻辑服务
显示
数据持久层
DAO组件层
业务逻辑组件层
MVC模式的控制器层
表现层

Java EE应用的优势

  1. 更稳定
  2. 更好的平台适应性
  3. 更好的扩展性,维护性

常见Java EE服务器

  • Web服务器:
    • Tomcat: Tomcat 和Java结合的最好,是Sun官方推荐的JSP服务器。
    • Jetty: Jetty是另一个优秀的Web服务器。Jetty有个更大的优点,Jetty可作为一个嵌入式服务器,即:如果在应用中加入Jetty的jar文件,应用可在代码中对外提供Web服务。
    • Resin: 是目前最快的JSP、Servlet运行平台,支持EJB。个人学习该服务器是免费的,但如果想将该服务器作为商业使用,则需要交纳相应的费用。
  • Java EE应用服务器:
    • Jboss: 开源的Java EE服务器,目前支持EJB3.0技术
    • Weblogic和Websphere: 这两个是专业的商用Java EE服务器,价格不菲。但在性能等各方面也是相当出色。
轻量级Java EE主流技术
前后端分离架构
JSP,Servlet和JavaBean
Spring MVC Struts 2
Spring
MyBatis Hibernate/JPA
Spring全家桶

常用的框架

  • MyBatis: 是一个面向Java环境的对象/关系映射工具(ORM)
  • Spring: 为企业应用的开发提供了一个轻量级的解决方案,主要有依赖注入、基于AOP的声明式事务管理等功能。

JavaEE的主流技术有:JSP、Servlet和JavaBean,Spring,MyBatis,SpringMVC

02.安装Tomcat

tomcat的默认端口是 8080 ,修改端口需要修改 conf 目录下的 server.xml文件修改port属性值即可。

tomcat的几个标准目录
bin
存放Tomcat启动和关闭等程序的文件夹
conf
存放一些Tomcat的配置文件,主要有 server.xml
webapps
该文件夹用于存放部署的Web应用
work
该文件夹存放Web应用运行时JSP编译生成的servlet的java和class文件

第2部分 Jsp&Servlet

01.JDBC

主要接口(都在java.sql包下面):

  • java.sql.DriverManager:处理驱动程序的调入和管理
  • java.sql.Connection:负责连接数据库
  • java.sql.Statement:负责执行数据库SQL语句
  • java.sql.ResultSet:负责存放查询结果
  • java.sql.PreparedStament:Statement的子接口,负责执行带有参数(?号))库的数据库SQL语句,常用的方法查询executeQuery()和增删改executeUpdate()

常见的数据库的驱动程序名称和url如下(这里我只列举了MsSQL的)
在这里插入图片描述
JDBC操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用PreparedStatement
PreparedStatement 是 Statement 的子接口,功能与 Statement 类似

  • 它在 sql 语句中使用了?代替了需要插入的参数
  • 用 PreperedStatement 的 setString(n,参数)或setInt(n,参数)等方法可以将第 n 个?用传进的参数代替。注意变量从1开始编号,这样做增加了程序的可维护性,也增加了程序的安全性
    在这里插入图片描述
    JDBC的事务管理
  • Connection类的3个控制事务的方法:
    • setAutoCommit(boolean autoCommit):
    • commit():
    • rollback():
  • JDBC API中默认:每条更新语句是一项事务,是自动提交事务

02.Web应用和JSP

JSP是Java Server Page的缩写
在这里插入图片描述
(1)JSP是Servlet的一种特殊形式 ,每个JSP页面就是一个Servlet实例(默认情况下只实例化一次) 。JSP 页面由web服务器编译成对应的Servlet。
(2)JSP文件必须在JSP服务器内运行。

  • B/S结构和C/S结构
    • B/S结构:请求/响应架构
    • C/S结构:客户端/服务器架构
    • 区别:
      1.收集用户输入数据的方式不一样
      2.状态是不连续的。请求/响应的架构只有当客户端发出请求时,服务器才可生成响应,服务器无法主动更新客户端状态
      3.生成显示时,服务器只能生成HTML标签,有浏览器根据HTML标签显示

Java Web应用的文件结构,必须要有个WEB-INF目录,下面有classes子目录(存放java编译后的class文件)、lib子目录(存放一些数据库驱动、第三方框架等jar文件)、web.xml(web最重要的配置文件,主要配置 servlet、filter、listener和首页等)。
在这里插入图片描述

注:web.xml
负责管理如下内容
1.配置JSP
2.配置和管理Servlet
3.配置和管理Listener
4.配置和管理Filter
5.配置标签库
6.配置JSP属性

03.JSP基本语法

  1. JSP注释
    <%-- 注释内容 --%> :客户端看不到
    <!-- 注释内容 -->:客户端可以看到

  2. JSP声明
    用于声明变量和方法
    语法:<%! 声明部分 %>
    如<%! private int i=10; %>
    定义的变量会转换成Servlet的成员变量

注:在这里插入图片描述
在这里插入图片描述

  1. 输出表达式
    语法:<%= 表达式 %>
    会在页面上输出表达式的值,功能等同于<% out.print(表达式); %>
    如<%= a %>
    注意不能加分号

  2. 脚本(程序段)
    最常用,功能较强大

语法:<% 脚本代码部分 %>
如:

<%
for(int i=0;i<10;i++){
	;
	}
%>


在这里插入图片描述
在这里插入图片描述

04.JSP的三个编译指令

JSP的编译指令是在把JSP 编译成servlet的时候需要用到编译指令都有默认值,因此无须为每个指令设置值

  • 常见的编译指令有三个:
    • page: 该指令是针对当前页面的指令
    • include: 用于指定如何包含另一个页面
    • taglib: 用于定义和访问自定义标签

编译指令的语法

<%@ 编译指令名 属性名="属性值" ······ %>

注意@和%号不能有空格

  1. page指令
  • page指令,通常位于JSP页面的顶端
  • 同一个页面可以有多个page指令
  • page指令的语法格式如下
<%@ page
	 [import="package.*,······"] 可以用逗号隔开各api
	 [contentType="text/html;charSet=utf-8"]
	 [pageEncoding="utf-8"]
	 ......
%>

其中,常用的属性如下:
import: 用于导包(API)的 可以用逗号隔开各api
contentType: 用于设定生成网页的文件格式和编码方式,默认的字符集为ISO-8859-1,一般需要改成utf-8
pageEncoding: 设置jsp页面存储的编码,默认的字符集为ISO-8859-1,一般需要改成utf-8

  1. include指令
    使用include指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句(如果有的话)
  • 这是个静态的include语句,其特征如下:
    • 会导入目标页面的编译指令。
    • 目标页面的代码会完全融入本页面。

include编译指令的语法格式如下:

<%@ include file="relativeURLSpec" %>

<%@ include file="head.jsp" %>

注:如果两个页面的编译指令不一样,就会出错
(关于这句话,我的理解是当包括的那个页面和原有的页面编译指令产生冲突,才会出错,而不是编译指令不一样就会出错)

  1. tablib指令
    tablib指令是用于定义和访问自定义标签的
  • 使用标签库分成以下两步
    • 导入标签库:使用taglib编译指令导入标签
    • 使用标签:在JSP页面中使用自定义标签

taglib指令的语法格式如下:

<%@ taglib uri="tagliburi" prefix="tagPrefix" %>

prefix就是标签前缀

<%@ taglib uri="/struts-tags" prefix="s" %>

使用标签的语法格式如下:

<tagPrefix:tagName
	tagAttribute="tagValue"...>
	<tagBody>
</tagPrefix>

如果该标签没有标签体,则可以使用如下语法格式:

<tagPrefix:tagName
	tagAttribute="tagValue".../>

05.JSP的7个动作指令

  • 动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的脚本动作

  • 编译指令在将JSP编译成Servlet时起作用;处理指令通常可替换成Java脚本,是JSP脚本的标准化写法。

语法:<jsp:动作名 属性 1="属性值 1" 属性 n="属性值 n" />
或者<jsp:动作名> 相关内容 </jsp:动作名>

7个动作指令

  • jsp:forward: 执行页面转向,将请求的处理转发到下一个页面
  • jsp:param: 用于传递参数,必须与其他支持参数的标签一起使用
  • jsp:include: 用于动态引入一个JSP页面
  • jsp:plugin: 用于下载JavaBean或Applet到客户端执行
  • jsp:useBean: 创建JavaBean的实例
  • jsp:setProperty: 修改javaBean实例的属性值
  • jsp:getProperty: 获取并输出JavaBean实例的属性值

(1)jsp:forward
语法

<jsp:forward page 
	=“{relativeURL|<%=expression%>}”
	{<jsp:param …/>}
</jsp:forward>

如:

<jsp:forward page=“forward-result.jsp”>
	<jsp:param name=“age” value=“29”/>
</jsp:forward>
  • forward指令用于将页面响应控制转发给另外的页面
  • forward指令只能是一次请求有效
  • forward指令即可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet

forward请求转发的特征:
1.依然是一次请求;
2.目标页面依然可访问请求参数;
3.地址栏里请求的URL没变

(2)jsp:include

语法

<jsp:include 
	page=“{relativeURL|<%=expression%>}”  
	fluse=“true”/>
或者
<jsp:include 
	page=“{relativeURL|<%=expression%>}”  
	fluse=“true”>
		<jsp:param name=“parameterName” 
		value=“patameterValue”/>
</jsp:include>

flush属性用于指定输出缓存是否转移到被导入文件中。

  • include指令是一个动态的include指令,是将目标页面的body部分的内容引入进来,插入到自己的页面中
  • include指令不会导入被include页面的其他编译指令(可对比一下静态编译指令include)

在这里插入图片描述
在这里插入图片描述

(3)jsp:useBean
语法

<jsp:useBean id= "name" class= "包名.类名" scope="request|session"/>
如:
<jsp:useBean id= "fund" class="edu.fzu.openfund.service.FundServiceImpl " scope="request|session"/>

其中
id 属性是JavaBean的实例名
class 属性确定JavaBean的实现类
scope 属性用于确定JavaBean 实例的生存范围,该范围主要有以下。
  request:该JavaBean实例在本次请求有效
  session:该JavaBean实例在本次session内有效,即本次会话有效
  page:该JavaBean实例仅在该页面有效
  application:该JavaBean实例在本应用内一直有效,一个web应用里面只能有一个application对象
(4)jsp:setProperty
语法

<jsp:setProperty name=“BeanName” 
property=“propertyName” value=“value” />

其中name属性确定需要设定JavaBean的实例名
property属性确定需要设置的属性名
value属性则确定需要设置的属性值
(5)jsp:getProperty
语法

<jsp:getProperty name=“BeanName” 
property=“propertyName” />

其中name属性确定需要输出的JavaBean的实例名
property属性确定需要输出的属性名
(6)jsp:plugin
语法:略

注:客户端必须安装虚拟机

(7)jsp:param
语法

<jsp:param name=“paramName” value=“paramValue” />
  • param指令用于设置参数值,这个指令本身不能单独使用,因为单独的param指令没有实际意义
  • param指令可以与以下三个指令结合使用:
    • jsp:include
    • jsp:forward
    • jsp:plugin
  • 当与include指令结合使用时,param指令用于将参数值传入被导入的页面;当与forward指令结合使用时,param指令用于将参数值传入被转向的页面;当与plugin指令结合使用时,则用于将参数传入页面中的JavaBean实例或Applet实例。

06.JSP的9个内置对象

  • JSP页面中包含9个内置对象,这9个内置对象都是Servlet API的类或者接口的实例,只是JSP规范将它们完成了默认初始化,即它们已经是对象,可以直接使用
  • JSP脚本JSP输出表达式中可以用内置对象
  • JSP声明部分不能用内置对象
9个内置对象
application对象
Web应用本身
config对象
该JSP的配置信息
exception对象
其页面中的异常和错误
out对象
JSP页面的输出流
page对象
该页面本身
pageContext对象
该JSP页面上下文
request对象
该对象封装了一次请求
response对象
服务器对客户端的响应
session对象
一次会话
  1. application对象
    对应的类型是javax.servlet.ServletContext的实例,表示Web应用本身,可以用于存储整个web应用范围内有效的对象(属性)
    操作application范围内的属性,对应的方法是:
    setAttribute(String attName, Object attValue):将一个值放入某个属性,该属性的值对整个Web应用有效;
    getAttribute(String attName):在Web应用的每个JSP页面或Servlet都可以访问该属性。
    获取Web应用所在服务器上的物理路径,对应的方法是:
    getRealPath():获取Web应用在服务器上的物理路径
    获取Web应用的配置参数,对应的方法是:
    getInitParameter(String paramName):获取Web应用的配置参数。
    application使用context-param元素配置参数,其中子元素param-name配置参数名, param-value配置参数值。

注释:通过第三种方式,可以将一些配置信息放在web.xml文件中配置,避免使用硬编码方式写在代码中,从而更好地提高程序解耦

  1. config对象
    config: javax.servlet.ServletConfig的实例,该实例代表该JSP的配置信息
    常用的方法有getInitParameter(String paramName)及getInitParameterNames()等方法。
    事实上,JSP页面通常无须配置,也就不存在配置信息。因此,该对象更多地在Servlet中有效。

  2. exception对象
    exception对象是java.lang.Throwable的实例,该实例代表其页面中的异常和错误
    只有当页面是错误处理页面,即page编译指令的isErrorPage属性为true时,该对象才可以使用。
    常用的方法有getMessage()和printStackTrace()等。

  3. out对象
    javax.servlet.jsp.JspWriter的实例,代表JSP页面的输出流,用于输出内容,形成HTML页面
    主要方法是:
    out.println(“表达式”);
    所有使用out的地方,都可以使用输出表达式 <%= “表达式” %>代替,而且使用输出表达式更加简洁

  4. page对象
    page对象代表该页面本身,通常没有太大用处。也就是Servlet中的this,用于代表该Servlet实例本身
    其类型就是生成的Servlet类

  5. pageContext对象
    pageContext对象是javax.servlet.jsp.PageContext的实例,该对象代表该JSP页面上下文,使用该对象可以访问页面中的共享数据。
    常用的方法有setServletContext()和getServletConfig()、setAttribute()、getAttribute(String name,int scope)等。

注:使用pageContext可以直接访问request,session,application范围的属性
在这里插入图片描述

  1. request对象
    request对象是javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里。
    这是一个常用的对象,获取客户端请求参数必须使用该对象。
    常用的方法有
    在这里插入图片描述在这里插入图片描述

request对象的作用

  • 取得请求参数的值
  • 操作request范围的属性
  • 执行include指令或forward指令

在这里插入图片描述
在这里插入图片描述

  1. response对象
    response对象是javax.servlet.HttpServletResponse的实例,代表服务器对客户端的响应
    它的三个常用作用:
    • 生成二进制响应。
    • 执行重定向。
    • 添加Cookie。
      主要方法是
      sendRedirect(String path);//重定向到某个页面
      在这里插入图片描述
  2. session对象
    session对象是javax.servlet.http.HttpSession的实例,该对象代表一次会话。一次用户会话的含义是:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止,这个过程就是一次会话。

session是把客户状态信息放在服务器端
在这里插入图片描述

07.Servlet介绍

1.Servlet开发的要求:

  1. 在控制层编写Java类,这个类必须继承HttpServlet
  2. 必须重写doGet和doPost方法来响应客户端的所有请求
  3. 需要在web.xml中配置servlet
  4. 如果有一些资源需要在Servlet启动的时候初始化,或关闭时销毁资源,必须重写init()和destroy()方法
  5. 不要为Servlet提供构造器

注意:如果重写了init(ServletConfig config)方法,则应在重写该方法的第一行调用
super.init(config)。该方法将调用HttpServlet的init方法。

在这里插入图片描述

2.Servlet开发步骤

  • 编写Servlet类
  • 在web.xml中配置servlet
    在这里插入图片描述
    3.Servlet的生命周期
    两个选择:1. 客户端请求对应的Servlet时,创建Servlet实例
         2. Web应用启动时,立即创建Servlet实例:即load-on-startup Servlet
    Servlet 是服务器端的应用程序,默认只实例化一次,采用多线程的方式处理所有请求。
    生命周期里的三个方法如下:
    init方法:用于初始化。
    destroy方法:用于释放资源。
    service方法:对用户的请求进行处理,根据不同的请求方式调用 doGet或doPost
    在这里插入图片描述
    过程如下:
    当客户端向Web服务器提出第一次Servlet请求时,Web服务器会实例化一个Servlet,并且调用init()方法;如果Web服务器中已经存在了一个Servlet 实例,将直接使用此实例;然后调用service() 方法,service()方法将根据客户端的请求方式来决定调用对应的 doGet()或doPost方法;当Servlet从Web服务器中消亡时,Web服务器将会调用Servlet的destroy()方法。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

08.使用Filter和Listener

Filter过滤器:特殊的Servlet,过滤器可以对用户的请求信息和响应信息进行过滤,以指定Servlet过滤器和特定的URL关联。原理图如下:
在这里插入图片描述

Filter它可对用户请求进行预处理,可对服务器响应进行后处理
Filter不能对客户端生成响应

创建Flter步骤
创建Filter处理类
在web.xml文件中配置Filter

创建Filter类的要求
1.必须实现javax.servlet.Filter接口
2.必须实现以下三个方法:

  • void init(FilterConfig config):用于完成Filter的初始化。
  • void destroy():用于Filter销毁前,完成某些资源的回收。
  • void doFilter(ServletRequest request, ServletResponse response, FilterChain chain):实现过滤功能,该方法就是对每个请求及响应增加的额外处理。

在这里插入图片描述

<!-- 定义Filter -->	
<filter>
		 <!-- Filter的名字 --> 
		       <filter-name>fiterName</filter-name>
		 <!-- Filter的实现类 --> 
		    <filter-class>filters.myFilter</filter-class>
</filter>
<!-- 定义Filter拦截地址 --> 
<filter-mapping>
		 <!-- Filter的名字 -->
		    <filter-name> fiterName </filter-name>
		 <!-- Filter负责拦截的URL --> 
		    <url-pattern>/*</url-pattern>
</filter-mapping>

Listener
使用Listener只需要两个步骤:
(1)定义Listener实现类。
(2)通过Annotation或在web.xml文件中配置Listerner。
要求:
必须实现ServletContextListener接口;
必须实现以下两个方法:
contextInitialized(ServletContextEvent sce):启动Web应用时,系统调用该Listener的方法。
contextDestroyed(ServletContextEvent sce):关闭Web应用时候,系统调用Listener的方法。
配置:
Listener无须配置URL。
若将Listener配置在Web应用中(如果Web容器支持Listener),则Listener将随Web应用的启动而启动。
在这里插入图片描述

09.JSP2新特性

表达式语言(EL)

  • 语法格式:
    • ${expression}
    • 即在页面中输出表达式的值

注意:如需要在支持表达式语言的页面中正常输出$符号,则在$符号前加转义字符\,否则系统以为$是表达式语言的标记

EL常用的内置对象有三个:sessionScoperequestScopeparam
例从seesion的范围中,输出用户的性别。${sessionScope.user.sex}
相当于<%=((User)session.getAttribute(“user”)).getSex()%>
从request的范围中,输出用户的性别。${requestScope.user.sex}
从请求参数里,输出用户名${param.username}

10.Servlet3新特性

11.JavaBean技术

规范

  1. 必须有一个无参数的构造函数
  2. 对于Bean中定义的所有属性提供getter和setter方法,并且这些方法是公共的
  3. 对于Boolean类型的属性,其getter方法的形式为isXxx的,其中Xxx为首字母大写的属性名

特性

  1. 可以实现代码重复使用
  2. 容易维护、容易使用且容易编写
  3. 可以再支持Java的任何平台上使用,而不需要重新编译
  4. 可以与其他部件整合

JSP使用JavaBean

<jsp:useBean>标签
<jsp:useBean id="login" class="JavaBean.Login"/>

JSP脚本
<% Login login = new Login(); %>

JSP访问JavaBean属性

<jsp:getProperty>标签
<jsp:getProperty name="login" property="userName"/>

JSP脚本
String Password = login.getPassword();
     out.print(Password);

输出表达式
<%= login.getPassword() %>

JSP设置JavaBean属性

<jsp:setProperty>标签
<jsp:setProperty name="login" property="userName" value="tsinghua"/>
<jsp:setProperty name="login" property="userName" value="<%=表达式%>"/>

在这里插入图片描述

12.MVC设计模式

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值