javaee
2023-03-21 23:28:13 14 举报
AI智能生成
javaee知识点详细思维导图
作者其他创作
大纲/内容
Servlet编程
web基础回顾
web基础概念
Web 万维网本质上就是Internet上的所有文档的集合
web工作模式
请求/响应模式
web请求方式
get,post,put,delete,head
web响应类型
文本类型
二进制类型
图片,声音。。。
Servlrt概述
什么是Servlet
servlet是运行在web容器的java类,它能处理http请求并产生http响应
servlet体系结构
提供servlet所有接口和类的包:javax.servlet,javax.servlet.http
servlet功能
接收http请求
取得请求信息
调用其他java类方法
生成http响应
servlet编程
导包
类继承HttpServlet接口
重写doGet(),doPost()
重写init()---》连接数据和打开i/o流
重写destroy(),清理工作
web应用重新部署
Web容器停止
Servlet类更新
servlet的生命周期
加载类和实例化阶段
在Web容器中加载
保存在jvm中
初始化阶段
调用init(),完成初始化
处理请求阶段
调用servlet中的service方法
销毁阶段
调用destroy()完成销毁
Servlet配置
servlet声明
<servlet>
<servlet-name>logout</servlet-name>
<servlet-class>com.blp.jadc.logout</servlet-class>
</servlet>
<servlet-name>logout</servlet-name>
<servlet-class>com.blp.jadc.logout</servlet-class>
</servlet>
servlet响应
<servlet-mapping>
<servlet-name>logout</servlet-name>
<url-pattern>/jadc/logout</url-pattern>
</servlet-mapping>
<servlet-name>logout</servlet-name>
<url-pattern>/jadc/logout</url-pattern>
</servlet-mapping>
路径
/目录/目录/文件名.扩展名
/目录/目录/*
*.扩展名
不可以混合使用,如,/目录/目录/*.扩展名,这是错的
思考题
Servlet与一般java类的相同点与不同点
相同点
创建的方法相同
不同点
用户不能直接创建servlet对象和方法
简述servlet的生命周期
在web容器中完成类加载和实例化,然后通过调用init方法完成初始化,接着调用servlet的service方法,在doget()和dopost()中处理请求并返回响应,最后调用destroy方法销毁。
简述servlet url地址的映射方式
/目录/目录/文件名.扩展名
/目录/目录/*
*.扩展名
HTTP请求处理编程
请求对象类型与生命周期
请求对象接口类型
javax.servlet.ServletRequest
javax.servlet.http.HttpServletRequest
请求对象生命周期
请求对象由web容器自动创建,并传递给doget,dopost方法
请求对象创建
自动创建实现HttpServletRequest的对象
请求对象销毁
向客户端发出响应后自动销毁
请求对象功能与方法(get)
取得请求头信息(header)
getHeader(String name),请求头字符串类型信息
.....
取得请求体中包含的提交参数数据(parameter)
getParameter(String name),前端表单传值,name属性
取得客户端的有关信息(remote)
getRemoteHost(),主机名
取得服务器相关信息(server)
getServerName(),IP地址
取得请求对象的属性信息
思考
简述请求对象的生命周期
请求对象由web容器自动创建,并传递给doget和dopost方法,给客户端发出响应后销毁
描述请求对象的主要方法
getParameter(),header,parameter,remote,server
HTTP响应处理编程
http响应的内容
响应状态
http响应最先发给客户端的是响应状态
200 成功
300 重定向
400 客户端错误
500 服务器错误
响应头
响应体
javaee web响应对象
响应对象类型
javax.servlet.ServletResponse
javax.servlet.http.HttpServletResponse
响应对象生命周期
响应对象由web容器创建,并传递给web组件,最后由web容器销毁
响应对象功能和方法(set)
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
response.getwriter().println() 获取字符输出流对象,向流对象发送文本数据输出到页面
流要关闭,response.getWriter().close()
思考
描述http响应对象的生命周期
web容器创建响应对象,传递给web组件,最后由web容器销毁
说明响应状态码的功能
当客户端向服务器端发送请求时,描述返回的请求结果
说明响应头的主要功能
来指示客户端如何处理响应头,主要用来告诉浏览器响应的类型,字符编码,和字节大小
Http会话跟踪编程
会话的基本概念
在web应用中把客户端浏览器开始请求web服务器,访问不同的web文档进行请求/响应,到结束访问
会话跟踪
在一个会话内保存用户的信息
会话跟踪方法
重写url
实现
获取前端传来的id参数:String userid=req.getParameter("userid");
通过重定向传递id: resp.sendRedirect("../p/view.do?pro=120&userid="+userid);
通过重定向传递id: resp.sendRedirect("../p/view.do?pro=120&userid="+userid);
缺点
url地址过长
不同浏览器对url传递参数的限制
安全性缺陷
编程复杂
隐藏表单字段
实现
表单中 type="hidden"
缺点
安全性差
编程复杂
无法在超链接模式下工作
cookie
什么是cookie
web服务器保存在客户端小的文本文件,name/value
将cookie保存到客户端
创建cookie对象
String userid=req.getParameter("userid"); Cookie cookie = new Cookie("JSESSIONID",userid);
设置cookie属性
cookie.setMaxAge(24*60*60); //设置cookie的有效期
发送到客户端
resp.addCookie(cookie);
缺点
存储方式单一(键值对)
存储位置限制(客户端)
大小受浏览器限制
可用性限制
安全性缺陷
会话对象session
会话对象的类型和取得
//得到Session
HttpSession session = req.getSession();
//给Session中存东西
session.setAttribute("name",new Person("秦疆",1));
//获取Session的ID
String sessionId = session.getId();
HttpSession session = req.getSession();
//给Session中存东西
session.setAttribute("name",new Person("秦疆",1));
//获取Session的ID
String sessionId = session.getId();
会话对象对的功能和方法
getAttribute(String name) 取出指定名称属性的值对象
setAttribute(String name,Object value) 将数据对象存入会话对象
//手动注销Session
session.invalidate();
session.invalidate();
会话对象的生命周期
创建
首次访问jsp页面将自动创建会话对象
首次请求servlet,且servlet内使用getSession(),web容器会自动创建会话对象
活动
在会话有效期内,将共享一个会话对象
销毁
关闭客户端浏览器后,sessionid将会永久销毁,客户端再也无法访问该session,到了时间服务器的session将会销毁
执行invalidate()
会话id的保存方式
cookie
存储sessionid
url重写
思考
简述会话对象的生命周期
当第一次访问浏览器或使用getSession方法时创建session,并共享同一个session数据,关闭浏览器或手动使用invalidate方法销毁会话对象
简述会话跟踪的几种方式的优缺点
url重写
优点
满足搜索引擎的要求
隐藏技术实现
缺点
url地址过长
不同浏览器对传递参数的限制(restful风格)
安全性缺陷
编程繁杂
cookie
优点
可实现跨页面
缺点
存储方式单一
安全性缺陷
存储位置限制
大小受浏览器限制
可用性限制
隐藏域
优点
适合大量数据存储
缺点
安全性差
编程复杂
无法在超链接模式下工作
为什么开发项目时尽可能使用url重写的方法保存sessionid
ServletContext(服务器环境对象)和web配置
服务器环境对象的生命周期
当web请求部署启动后,servletcontext对象被web容器自动创建,当web应用停止后web容器自动销毁servletcontext对象
服务器环境对象的功能和方法
web级数据共享容器
读取web级初始化参数
访问外部资源
取得web应用基本信息
web应用日志输出
javaee web的配置
web级初始参数配置
<context-param></context-param>
servlet配置
servlet声明
<servlet></servlet>
servlet映射
<servlet-mapping></servlet-mapping>
web应用级异常处理配置
<error-page></error-page>
配置起始文件
<welcome-file-list></welcome-file-liet>
转发和重定向
转发
web组件在服务器端直接请求到另外web组件的方式,转发在web容器内部进行
req.getRequestDispatcher("/jsp/picture.jsp").forward(req,resp);
重定向
通过各种方法将各种网络请求重新定个方向转到其它位置
resp.sendRedirect("jsp/list.jsp");
区别
重定向由客户端完成,转发由服务器完成
请求/响应次数不同,重定向两次请求,转发一次
目标位置不同
转发url不变,重定向url会变
思考
使用ServletContext对象有哪些注意事项
说明转发和重定向的区别
说明转发和重定向最佳使用情形
对于竭力避免表单重复提交的场景下选择重定向方式,对于效率要求更高的场景,携带较多参数则选择服务器内转发
过滤器
什么是过滤器
对某种数据流动进行数据过滤处理的对象
过滤器的主要功能
登入检验
权限审核
数据验证
日志登记
数据压缩/解压缩
数据加密/解密
api
javax.servlet.Filter
实现
该类实现Filter接口
必须要让过滤器继续同行
chain.doFilter(request,response);
chain.doFilter(request,response);
public void destroy() {
System.out.println("销毁");
}//web服务器关闭即销毁
System.out.println("销毁");
}//web服务器关闭即销毁
配置
filter声明
filter映射
监听器
什么是监听器
能够监测其他对象活动的对象
监听器的主要功能
网站访问人数或次数计数器
网站登入用户人数和在线用户监测
日志记录
会话超时处理
监听器的类型
ServletContext 对象监听器
ServletContext 对象属性监听器
HttpSession 对象监听器
HttpSession 对象属性监听器
HttpServletRequest 对象监听器
HttpServletRequest 属性监听器
配置
<listener></listener>
思考
简述监听器的主要功能
监听器类型及用途
JSP
什么是jsp
一种使用java语言作为器脚本语言,在javaee web服务器内运行生成动态web网页的技术
jsp的特点
jsp是html格式的文本标记文件
jsp的执行过程
解析,编译后生成.class类文件运行
jsp的组成
html标记代码
jsp元素
jsp指令
page指令
语法
<%@page 属性名="值" 属性名=''值''%>
属性和意义
language
import
用于在jsp页面中引入java类
<%@page import="javax.servlet"%>
contentType
用于控制jsp页面的http响应MIME类型
<%@page contentType="text/html"%>
pageEncoding
用于设定jsp文本响应类型的字符集编码
<%@page pageEncoding="GBK"%>
errorPage
设定当jsp发生异常时,自动转发的页面
<%@page erroePage="error.jsp"%>
isErrorPage
用于判断该jsp页面是否为错误页面
<%@page isErrorPage="true"%>
session
include指令
经常应用在复合页面的生成
页面的嵌入,头部和底部
<%@ include file="p.jsp"%>
taglib指令
允许使用用户自定义标签
<%@ taglib uri="标记库url地址" prefix="标记前缀名"%>
jsp动作
语法
<jsp:动作名称 属性名=“值”属性名=“值”属性名=“值”/>
类型
<jsp:include>嵌入其他页面输出动作
include动作和include指令之间的根本性不同在于他们被调用的时间
include动作便于维护
<jsp:include page="url" flush="true"/>
<jsp:forward> 转发动作
传递参数到目标转发地址
<jsp:forward page="url" > <jsp:param name="参数名" value="值"/></jsp:forward>
jsp:plugin> 引入插件动作
<jsp:param>提供参数动作
是唯一不能单独使用的动作,需要嵌入到其他动作中使用
<jsp:usebean>使用javabean动作
useBean动作先查找,后创建,可引用servlet转发过来的Bean对象
<jsp:useBean id="变量名" class="包名.类名" scope="范围"/>
<jsp:setProperty>设置javabean属性动作
<jsp:setProperty name="beanid" name="属性名" value="值"/>
<jsp:getProperty>取得javabean属性动作
<jsp:getProperty name="beanid" property="属性名"/>
jsp内置对象
request;请求对象
javax.servlet.http.HttpServletRequest
response;响应对象
javax.servlet.http.HttpServletResponse
session;会话对象
javax.servlet.http.HttpSession
application;应用服务器对象
javax.servlet.ServletContext
page;jsp本身页面类对象
java.lang.Object
pageContext;页面级环境变量,作为页面级容器
out;输出对象
exception;异常对象
config;配置对象
javax.servlet.ServletConfig
思考
比较jsp和servlet的不同点和相同点
相同点
最终都为相同的java类
都是复合javaee规范的web组件
都在web容器中运行
都可以接收http请求并产生响应
不同点
编程方式不同
运行方式不同
简述jsp的执行流程
解析,编译后生成.class类文件运行
简述及jsp的组成部分
html标记代码和jsp元素组成
EL和JSTL
EL表达式基本语法和应用(前后端交互,前端从后端取值)
语法
${表达式},取值
${变量名.属性名}
应用
目的是在jsp页面输出动态内容,计算表达式的值,将其转换为String,并显示到页面
jstl基础和引入
基础
jsp标准标记库
实现了web应用中jsp页面各种任务的统一化标记
目的
规范并统一jsp动态网页开发任务中的标记实现
引入
jstl.jar,stardard.jar
jstl标记内容
jstl核心标记
通用标记
显示,保存,删除
<c:out/>输出,<c:set/>存储,<c:remove/>删除,<c:catch/>异常处理
逻辑判断标记
<c:if/>,<c:choose/>
循环遍历标记
<c:forEach/>
url地址标记
jstl数据库标记
<sql:setDataSource> 连接
两种方式获取数据库连接
通过配置数据源JNDI
通过配置驱动,url,账号和密码
<sql:query> 查询
<sql:update> 增,改,删除
国际化标记库
jstl i18 标记
基础
本地化
<fmt:setLocale>
资源绑定
<fmt:bundle>
基础名称
xml处理标记库
函数标记库
思考
简要说明jstl的优点
统一并规范了jsp动态页面的标记实现,简化了jsp页面的开发,提高了jsp页面的开发效率
写出jsp页面中引入jstl核心,sql,i18的指令语句
jstl-----> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
sql-----> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
i18-----> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
JNDI
什么是命名服务
命名对象需要保存到Context中,同时Context需要某种机制进行管理,这种机制就是命名服务
什么是jndi
是连接命名服务和目录服务的接口
jndi api 组成
javax开头
思考
命名服务的功能和优点
管理context
举例说明java编程中的到一个类对象的几种方法
通过类的实例的getClass()
通过反射机制,class.forName()
通过类名.class
JDBC
JDBC基础
连接和操作数据的接口
JDBC驱动类型
TYPE I(1)类型
JDBC-ODBC桥连接模式
TYPE II(2)类型
TYPE III(3)类型
纯java体系结构,三个层次组成
TYPE IV(4)类型
使用最普遍,纯java驱动
JDBC框架结构
JDBC,API,数据库驱动管理器DriverManager和数据库厂家驱动
JDBC核心接口和类
java.sql.DriverManager
管理并追踪可用驱动程序
包含一系列java.sql.Derver
自动注册
Class.forName("com.mysql.jdbc.driver")
JDBC-ODBC桥驱动类型
建立与数据库的连接
DriverManager.getConnection(url,"username","password");
java.sql.Connection
java.sql.Statement
获取Statement对象
Statement statement = connect.createStatement();
执行sql语句
int b = statement.executeUpdate(sql);
关闭连接
statement.close
java.sql.PerparedStatement
获取PerparedStatement对象并执行sql
PreparedStatement preparedStatement = connection.prepareStatement(sql);
获取结果集
ResultSet re=preparedstatement.excuteQuery();
关闭连接
preparedstatement.close
java.sql.ResultSset
ResultSet rs=preparedstatement.executeQuery(); while(rs.next()){int no=rs.getInt(1);//获取第一个字段String name=rs.getString("username");//读取username字段
JDBC版本
数据库连接池
组成
连接池的建立
连接池的管理
连接池的关闭
作用
实现连接复用
思考
JDBC的优点
直接底层操作,提供了简单,便捷访问数据库方法
javaMail编程
javaMail API
什么是javaMail API
基于java语言用于阅读,编写和发送电子消息的可选包
主要类和接口(javax.mail)
Session
连接Mail Server
Message
泛指各种消息邮件
message.setSubject()设置邮件的标题
message.setSendDate()设置邮件的日期
Address
邮件地址
Authenticator
验证邮件合法性
Transport
核心类,实现Mail的发送
Transport.(message)
Store
邮件存储器
Folder
邮件存储目录
步骤
设置Mail Server参数
取得session对象
创建邮件消息Message对象
创建发送人地址
创建接收人地址
设置邮件的标题,日期
设置邮件内容
发送邮件
Java EE企业级应用MVC模式
什么是mvc模式
模型--视图--控制器模式
组成及作用
模型
用于封装与应用程序业务逻辑相关数据以及对数据的处理方法
模型对数据有直接访问的权利
视图
业务数据的输入和显示
控制器
起到View组件和Model组件之间的组织协调作用
应用
DAO持久层
controller控制层
service业务层
View表示层.jsp
0 条评论
下一页
为你推荐
查看更多