JSP学习
jsp是什么?
Java server pages。 Java 服务器端页面。 是在服务器端执行的
实现了在 Java 当中使用HTML 标签
技术特点:
Java平台, 安全性高, 适合开发大型的, 企业级的 Web应用程序
基础语法
jsp指令
page指令
通常位于jsp页面的顶端, 同一个页面可以有多个page 指令
<%@ page language="java" contentType="text/html; charset=utf-8"
%>
属性
作用
language
设置jsp执行的语言
import
当前页面引入的库文件
contentType
设置页面的编码格式
**pageEncoding=”UTF-8”**的作用是设置JSP编译成Servlet时使用的编码。
**contentType=”text/html;charset=UTF-8”**的作用是指定服务器响应给浏览器的编码。
表示的是HTML标签的编码 - [request](https://so.csdn.net/so/search?q=request&spm=1001.2101.3001.7020).setCharacterEncoding(“UTF-8”)的作用是设置对客户端请求和数据库取值时的编码 ,可以解决post请求的中文乱码问题 - 如何解决get请求传参的中文乱码问题
修改tomcat配置的server.xml的URLEncoding
include指令
将一个外部文件嵌入到当前的 JSP 文件中, 同时解析这个页面的 JSP 语句
taglib指令
使用标签库定义新的自定义标签, 在JSP页面中启用定制行为
jsp注释
html 注释:
//客户端可见
jsp脚本注释:
<%-- html注释 --%> //客户端不可见
JSP脚本注释:
<%
// 单行注释
/* 多行注释 */
%>
jsp脚本
就是标签内置执行代码
语法:
<% Java代码 %>
jsp声明
在JSP页面中定义变量或者方法
语法:
<%! Java代码 %>
例子:
<%!
String s = '张三'; // 声明了一个字符串变量
int add(int x,int y) { // 声明了一个返回整形的函数
return x + y;
}
%>
jsp表达式
在jsp页面中执行的表达式
语法:
<% =表达式 %> // 表达式不以分号结束
jsp页面生命周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLURrhP4-1647329905250)(JSP%E5%AD%A6%E4%B9%A0.assets/1646197348574.png)]
jsp内置对象
jsp内置对象是Web 容器创建的一组对象, 不适用new关键字就可以使用内置对象。
缓冲区buffer
就是内存的一块区域用来保存临时数据
out对象
out对象是JspWriter类的实例,是向客户端输出内容的常用对象
常用方法如下:
void println() 向客户端打印字符串
void clear() 清除缓冲区内容,如果在 flush 之后调用会抛出异常
void clearBuffer() 清除缓冲区内容,如果在flush之后调用不会抛出异常
void flush() 将缓冲区内容输出到客户端,然后刷新缓冲区
int getBufferSize() 返回缓冲区以字节数的大小, 如果不设缓冲区则为0
int getRemaining() 返回缓冲区还剩余多少可用
boolean isAutoFlush() 返回缓冲区满时, 是自动清空还是抛出异常
void close() 关闭输出流
表单提交方式
表格table
tr 是一行
colspan=”2“ 表示单元格横占几格
get
以明文的方式通过url提交数据, 数据在url中可以看到。
提交的数据最多不超过2kb。
安全性较低但效率比post方式高
post
将用户提交的信息封装在request header中。适合提交数据量大, 安全性高的用户数据。
request对象
客户端的请求信息被封装在request 对象中, 通过它才能了解到客户的需求, 然后做出响应。 它是HttpServletRequest类的实例。 request对象具有请求域, 即完成客户端的请求之前,该对象一直有效。就是每一次请求都是一个request实例。常用方法如下:
String getParameter(String name) 返回name 项的值
String[] getParameterValues(String name) 返回所有name项的数组
void setAttribute(String,Object) 储存此请求中得属性
object getAttribute(String name) 返回指定属性得属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型即版本号
String getServerName() 返回接受请求的服务器主机名
int getServerPort() 返回服务器接收此请求所用的端口号
String getCharacterEncoding() 返回字符编码方式
void setCharacterEncoding() 设置请求的字符编码方式
int getContentLength() 返回请求体的长度,字节
String getRemoveAddr() 返回发送此请求的客户端的IP地址
String getRealPath(String path) 返回一条虚拟路径的真实路径
String getContextPath() 返回上文路径
getRequestDispatcher().forward(req, resp) 重定向
response对象
response对象包含了响应客户请求的有关信息。特使HttpServletResponse类的实例。response对象具有页面作用域。即每一个页面都是一个实例(response对象)
常用方法:
String getCharacterEcoding() 返回响应用的是何种字符编码
void setContentType(String type) 设置响应的MIME 类型
printWriter getWriter() 返回可以向客户端输出字符的一个对象
(与内置out对象的区别: 它的输出总是提前于out对象的输出)
sendRedirect(java.lang.String location) 重新定向客户端的需求
总结:每个页面都有自己的request 和response ,request 封装本页面被请求的信息,response 封装响应给别人的信息。
请求转发与请求重定向
请求重定向:客户端行为, response.sendRedirect(“url”), 从本质上来讲等同于两次请求,前一次的请求对象不会保存,地址栏的url地址会改变。
请求转发: 服务器行为, request.getRequestDispatcher(“url”).forward(request, response); 是一次请求, 转发后请求对象会保存,地址栏的url地址不会改变。
问:为什么有flush不能请求重定向?
response页面一旦调用一个flush()方法后,代表该response已经提交, 执行完毕,不能再使用
而请求重定向需要这个response 回复客户端。但是这个response 已经不能用了,所以会报错。
a相当于一次请求请求重定向,两次请求不属于一个request。两次回复也不属于一个response。
说明同一个网页有且仅有一个相同的request实例,一个response实例。这次requst 的生命周期等到response输出到前端时才算结束。
使用请求转发是共享request 和 response
session
什么是session?
session 表示客户端与服务器的一次会话。
只要有任何页面存在都会被视为是在同一个会话里面。
session对象
session 对象是一个 JSP 内置对象
session 对象在第一个JSP 页面被装载时自动创建,完成会话期管理
session 对象时HttpSession 类的实例
常用方法:
long getCreationTime(): 返回session 创建时间,毫秒级
public String getId(): 返回session 创建时JSP 引擎为它设的唯一的 ID 号
public Object setAttribute(String name, Object value): 使用指定名称将对象绑定到此对话
public Object getAttribute(String name): 返回与此会话中的指定名称绑定在一起的对象, 如果没有对象绑定在该名称下, 则返回null
String[] getValueNames(): 返回一个数组,包含此session 种所有的属性
int getMaxInactiveInterval(): 返回session过期的时间
int setMaxInactiveInterval(): 设置session的过期时间
session的生命周期
1.创建
当客户端第一次访问某个jsp 或者Servlet 时候,服务器会为当前会话创建一个SessionId,每次客户端向服务端发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验
2.活动
某次会话当中通过超链接打开新页面属于同义词会话
只要当前会话页面没有全部关闭, 重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。
除非本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet 将会创建新的会话。
注意:关闭以后,其实原有会话还存在, 只是这个旧的SessionId还存在于服务端,只不过再也没有客户端携带它然后交予服务端校验。
3.销毁
Session 的销毁只有三种方式:
调用了session.invalidate() 方法
Session 过期
服务器重新启动
application 对象
application 对象实现了用户间数据的共享,可存放全局变量
application 开始于服务器的启动, 终止于服务器的关闭
在任何地方对application 对象属性的操作,都将影响到其它用户对此的访问
application 对象时ServletContext类的实例
常用方法:
public void setAttribute(String name, Object value) 使用指定名称将对象绑定到此会话
public Object getAttribute(String name) 返回此会话中的指定名称绑定在一起的对象
Enumeration getAttributeNames 返回所有可用属性名的枚举
String getServerInfo() 返回JSP(servlet)引擎名及版本号
page 对象
page 对象就是指当前JSP 页面本身,有点像类中的this 指针
page 对象是jaga.lang.Object 类的实例
常用方法:
class getClass() 返回此Object的类
int hashCode() 返回此Object的hash 码
boolean equals(Object obj) 判断此Object是否与指定的Object 对象相等
void copy(Object obj) 把此Object拷贝到指定的Object 对象中
Object clone() 克隆此Object对象
String toString() 把此Object对象转换为String类的对象
void notify 唤醒一个等待的线程
void notifyAll() 唤醒所有的等待线程
void wait(int timeout) 使一个线程处于等待直到timeout结束或被唤醒
void wait() 使一个线程处于等待直到被唤醒
pageContext 对象
pageContext 对象提供了对JSP页面内所有的对象及名字空间的访问
pageContext 对象可以访问到本页所在的session,也可以取本页面所在的application的某一属性值
pageContext 对象相当于页面中所有功能的集大成者
pageContext对象是 pageContext类的实例
常用方法:
JSPWriter getOut() 返回当前客户端响应被使用的JspWriter流(out)
HttpSession getSession() 返回当前页面中的HttpSession对象(session)
Object getPage() 返回当前页中的page
ServletRequest getRequest() 返回当前页的request
ServlerResponse getResponse() 返回当前页的response
void setAttribute(String name,Object attribute)设置属性和属性值
Object getAttribute(String name,int scope) 在指定范围内取属性的值
int getAttributeScope(String name) 返回某属性的作用范围
void forward(String relativeUrlPath) 使当前页面重导到另一页面
void include(String relativeUrlPath) 在当前位置包含另一文件,包括HTML内容都会显示
exception 对象
exception 对象是一个异常对象,当一个页面运行过程中发生了异常,就产生了该对象。
它是java.lang.Throwable的对象。
常用方法:
String getMessage()返回描述异常的消息
String toString() 返回关于异常的简短描述消息
void printStackTrace() 显示异常及其栈轨迹
Throwable FillInStackThrce() 重写异常的执行栈轨迹
注意:处理异常时,需要在头文件中指定处理异常的页面。而在处理异常页面的头文件中需要声明isErrorPage为true. 具体代码如下
异常页面:
errorPage="doexception.jsp"
处理异常页面:
isErrorPage="true"
Javabean
Javabeans 就是符合某种特定的规范的Java 类。
使用Javabeans 的好处是解决了代码重复编写,减少代码冗余,功能区分明确, 提高了代码的维护性。
设计原则
公有类
无参的公有构造方法
属性私有
getter 和 setter 方法
Jsp动作元素
动作元素为请求处理阶段提供信息。动作元素遵循 XML 元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签。
在jsp页面中如何使用Javabeans
Javabean 的四个作用域范围
使用useBeans的scope属性可以用来指定javabean 的作用范围
page 在当前页面有效
request 可以通过HttpRequest.getAttribute() 方法取得JavaBean 对象
session 可以通过HttpSession.getAttribute() 方法取得JavaBean 对象
application 可以通过 application.getAttribute() 方法取得JavaBean 对象
问题:useBean 的意思是拿到一个class类的实例,如果没有,则创建一个
https://blog.csdn.net/allway2/article/details/111018118
Model1 简介
JavaBean 的出现可以使jsp 页面中使用JavaBean 封装的数据或者调用JavaBean 的业务逻辑代码, 这样大大提升了程序的可维护性。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BAbKGFmC-1647329905251)(JSP%E5%AD%A6%E4%B9%A0.assets/1646705232203.png)]
jsp状态管理
http协议的无状态性
就是指浏览器二次发送请求时,服务器并不知道它就是第一次发送请求的那个浏览器。
保存用户状态的两大机制
session
cookie 中文名称为 ‘小甜饼’, 是web 服务器保存在客户端的一系列[数组]文本信息。
作用:
对特定对象的追踪
保存用户网页的浏览记录与习惯
简化登录
安全风险: 容易泄露用户信息
在jsp中创建与使用Cookie 创建cookie对象
Cookie newCookie = new Cookie(String key, Object value);
写入cookie
response.addCookie(newCookie);
读取Cookie 对象
Cookie[] cookies = request.getCookies();
常用方法:
void setMaxAge(int expiry) 设置cookie 的有效期,以秒为单位
void setValue(String value) 在cookie 创建后,对cookie进行赋值
String getName() 获取cookie 的名称
String getValue() 获取cookie 的值
int getMaxAge() 获取cookie 的有效时间,以秒为单位
session 和 cookie的对比
session
cookie
在服务器端保存用户信息
在客户端保存用户信息
保存的是Object类型
保存的是String类型
随会话的结束而将其存储的数据销毁
cookie可以长期(生存期限)保存在客户端
保存重要的信息
保存用户不重要用户信息
指令与动作
include 指令
语法:<%@ include file="URL">
include 动作
语法:
page: 要包含的页面
flush: 被包含的页面是否从缓冲区读取
include指令
jsp:include动作
语法格式
<%@ include file="URL">
等同于: request.getRequestDispatcher("/url").forward(request, response);
param 动作
语法:
常常与
一起使用,作为其的子标签
附件:
案例:
你可能感兴趣的:(Java,eclipse,java,jsp)
JSON 与 AJAX
Auscy
json ajax 前端
一、JSON(JavaScriptObjectNotation)1.数据类型与语法细节支持的数据类型:基本类型:字符串(需用双引号)、数字、布尔值(true/false)、null。复杂类型:数组([])、对象({})。严格语法规范:键名必须用双引号包裹(如"name":"张三")。数组元素用逗号分隔,最后一个元素后不能有多余逗号。数字不能以0开头(如012会被解析为12),不支持八进制/十六进制
JavaScript 树形菜单总结
Auscy
microsoft
树形菜单是前端开发中常见的交互组件,用于展示具有层级关系的数据(如文件目录、分类列表、组织架构等)。以下从核心概念、实现方式、常见功能及优化方向等方面进行总结。一、核心概念层级结构:数据以父子嵌套形式存在,如{id:1,children:[{id:2}]}。节点:树形结构的基本单元,包含自身信息及子节点(若有)。展开/折叠:子节点的显示与隐藏切换,是树形菜单的核心交互。递归渲染:因数据层级不固定,
精通Canvas:15款时钟特效代码实现指南
烟幕缭绕
本文还有配套的精品资源,点击获取简介:HTML5的Canvas是一个用于绘制矢量图形的API,通过JavaScript实现动态效果。本项目集合了15种不同的时钟特效代码,帮助开发者通过学习绘制圆形、线条、时间更新、旋转、颜色样式设置及动画效果等概念,深化对Canvas的理解和应用。项目中的CSS文件负责时钟的样式设定,而JS文件则包含实现各种特效的逻辑,通过不同的函数或类处理时间更新和动画绘制,提
深入剖析OpenJDK 18 GA源码:Java平台最新发展
想法臃肿
本文还有配套的精品资源,点击获取简介:OpenJDK18GA作为Java开发的关键里程碑,提供了诸多新特性和改进。本文章深入探讨了OpenJDK18GA源码,揭示其内部机制,帮助开发者更好地理解和利用这个版本。文章还涵盖了PatternMatching、SealedClasses、Records、JEP395、JEP406和JEP407等特性,以及HotSpot虚拟机、编译器、垃圾收集器、内存模型
Java大厂面试实录:谢飞机的电商场景技术问答(Spring Cloud、MyBatis、Redis、Kafka、AI等)
Java大厂面试实录:谢飞机的电商场景技术问答(SpringCloud、MyBatis、Redis、Kafka、AI等)本文模拟知名互联网大厂Java后端岗位面试流程,以电商业务为主线,由严肃面试官与“水货”程序员谢飞机展开有趣的对话,涵盖SpringCloud、MyBatis、Redis、Kafka、SpringSecurity、AI等热门技术栈,并附详细解析,助力求职者备战大厂面试。故事设定谢
【超硬核】JVM源码解读:Java方法main在虚拟机上解释执行
HeapDump性能社区
java 开发语言 后端 jvm
本文由HeapDump性能社区首席讲师鸠摩(马智)授权整理发布第1篇-关于Java虚拟机HotSpot,开篇说的简单点开讲Java运行时,这一篇讲一些简单的内容。我们写的主类中的main()方法是如何被Java虚拟机调用到的?在Java类中的一些方法会被由C/C++编写的HotSpot虚拟机的C/C++函数调用,不过由于Java方法与C/C++函数的调用约定不同,所以并不能直接调用,需要JavaC
算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
在计算机科学和数学领域,蒙特卡洛算法(MonteCarloAlgorithm)以其独特的随机抽样思想,成为解决复杂问题的有力工具。从圆周率的计算到金融风险评估,从物理模拟到人工智能,蒙特卡洛算法都发挥着不可替代的作用。本文将深入剖析蒙特卡洛算法的思想、解题思路,结合实际应用场景与Java代码实现,并融入考研408的相关考点,穿插图片辅助理解,帮助你全面掌握这一重要算法。蒙特卡洛算法的基本概念蒙特卡
Java大厂面试故事:谢飞机的互联网音视频场景技术面试全纪录(Spring Boot、MyBatis、Kafka、Redis、AI等)
来旺
Java场景面试宝典 Java Spring Boot MyBatis Kafka Redis 微服务 AI
Java大厂面试故事:谢飞机的互联网音视频场景技术面试全纪录(SpringBoot、MyBatis、Kafka、Redis、AI等)互联网大厂技术面试不仅考察技术深度,更注重业务场景与系统设计能力。本篇以严肃面试官与“水货”程序员谢飞机的对话,带你体验音视频业务场景下的Java面试全过程,涵盖主流技术栈,并附详细答案解析,助你面试无忧。故事场景设定谢飞机是一名有趣但技术基础略显薄弱的程序员,这次应
【前端】jQuery数组合并去重方法总结
在jQuery中合并多个数组并去重,推荐使用原生JavaScript的Set对象(高效简单)或$.unique()(仅适用于DOM元素,不适用于普通数组)。以下是完整解决方案:方法1:使用ES6Set(推荐)//定义多个数组constarr1=[1,2,3];constarr2=[2,3,4];constarr3=[3,4,5];//合并数组并用Set去重constmergedArray=[...
MySQL Explain 详解:从入门到精通,让你的 SQL 飞起来
引言:为什么Explain是SQL优化的“照妖镜”?在Java开发中,我们常常会遇到数据库性能瓶颈的问题。一条看似简单的SQL语句,在数据量增长到一定规模后,可能会从毫秒级响应变成秒级甚至分钟级响应,直接拖慢整个应用的性能。此时,你是否曾困惑于:为什么这条SQL突然变慢了?索引明明建了,为什么没生效?到底是哪里出了问题?答案就藏在MySQL的EXPLAIN命令里。EXPLAIN就像一面“照妖镜”,
Java特性之设计模式【责任链模式】
Naijia_OvO
Java特性 java 设计模式 责任链模式
一、责任链模式概述顾名思义,责任链模式(ChainofResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推主要解决:职责链上的处理者负责处理请求,客户只需要将
日历插件-FullCalendar的详细使用
老马聊技术
JavaScript 前端 javascript
一、介绍FullCalendar是一个功能强大、高度可定制的JavaScript日历组件,用于在网页中显示和管理日历事件。它支持多种视图(月、周、日等),可以轻松集成各种框架,并提供丰富的事件处理功能。二、实操案例具体代码如下:FullCalendar日期选择body{font-family:Arial,sans-serif;margin:20px;}#calendar{max-width:900
react-native android 环境搭建
环境:macjava版本:Java11最重要:一定要一定要一定要react涉及到很多的依赖下载,gradle和react相关的,第一次安装环境时有外网环境会快速很多。安装nodejs安装react-nativenpminstallreact-native-clinpminstallreact-native创建一个新项目react-nativeinitfirstReact替换gradle下载源rep
Java 调用 HTTP 接口的 7 种方式:全网最全指南
Java调用HTTP接口的7种方式:全网最全指南在开发过程中,调用HTTP接口是最常见的需求之一。本文将详细介绍Java中7种主流的调用HTTP接口的方式,包括每种工具的优缺点和完整代码实现。1.使用RestTemplateRestTemplate是Spring提供的同步HTTP客户端,适用于传统项目。尽管从Spring5开始被标记为过时,它仍然是许多开发者的首选。示例代码importorg.sp
Java三年经验程序员技术栈全景指南:从前端到架构,对标阿里美团全栈要求
可曾去过倒悬山
java 前端 架构
Java三年经验程序员技术栈全景指南:从前端到架构,对标阿里美团全栈要求三年经验是Java程序员的分水岭,技术栈深度决定你成为“业务码农”还是“架构师候选人”。本文整合阿里、美团、滴滴等大厂招聘要求,为你绘制可落地的进阶路线。一、Java核心:从语法糖到JVM底层三年经验与初级的核心差异在于系统级理解,大厂面试常考以下能力:JVM与性能调优内存模型(堆外内存、元空间)、GC算法(G1/ZGC适用场
javascript高级程序设计第3版——第12章 DOM2与DOM3
weixin_30687587
javascript 数据结构与算法 ViewUI
12章——DOM2与DOM3为了增强D0M1,DOM级规范定义了一些模块。DOM2核心:为不同的DOM类型引入了一些与XML命名空间有关的方法,还定义了以编程方式创建Document实例的方法;DOM2级样式:针对操作元素的样式而开发;其特性总结:1.每个元素都有一个关联的style对象,可用来确定和修改行内样式;2.要确定某个元素的计算样式,可使用getComgetComputedStyle()
Java设计模式实战:高频场景解析与避坑指南
mckim_
笔记 学习 java 设计模式
引言设计模式是软件开发的基石,但许多开发者面对23种模式时容易陷入“学完就忘”或“滥用模式”的困境。本文从工业级项目视角出发,精选10种高频设计模式,结合真实代码案例与主流框架应用,帮你建立模式思维,拒绝纸上谈兵。一、创建型模式:告别new的暴力美学1.工厂方法模式(FactoryMethod)核心痛点:对象创建逻辑散落各处,难以统一管理。场景案例:电商平台需要支持多种支付方式(支付宝、微信、银联
JavaScript 基础09:Web APIs——日期对象、DOM节点
梦想当全栈
JavaScript javascript 前端 开发语言
JavaScript基础09:WebAPIs——日期对象、DOM节点进一步学习DOM相关知识,实现可交互的网页特效能够插入、删除和替换元素节点。能够依据元素节点关系查找节点。一、日期对象掌握Date日期对象的使用,动态获取当前计算机的时间。ECMAScript中内置了获取系统时间的对象Date,使用Date时与之前学习的内置对象console和Math不同,它需要借助new关键字才能使用。1.实例
《Java前端开发全栈指南:从Servlet到现代框架实战》
前言在当今Web开发领域,Java依然是后端开发的主力语言,而随着前后端分离架构的普及,Java开发者也需要掌握前端技术栈。本文将全面介绍JavaWeb前端开发的核心技术,包括传统Servlet/JSP体系、现代前端框架集成方案,以及全栈开发的最佳实践。通过本文,您将了解如何构建现代化的JavaWeb应用前端界面。一、JavaWeb前端技术演进1.1传统技术栈Servlet:JavaWeb基础,处
javaSE面试题---语法基础、面向对象、常用类、集合、多线程、文件和IO
yang_xiao_wu_
java 面试 开发语言 javase java基础 多线程 文件和IO
目录语法基础1.jdkjrejvm区别2.基本数据类型3.引用数据类型4.自动类型转换、强制类型转换5.常见的运算符6.&和&&区别7.++--在前和在后的区别8.+=有什么作用9.switch..case中switch支持哪些数据类型10.break和continue区别11.while和dowhile区别12.如何生成一个取值范围在[min,max]之间的随机数13.数组的长度如何获取?数组下
JAVA 高频八股文 Day03
Conqueror675
java 开发语言
12.TCP和Http的区别是什么TCP是传输层协议,负责建立可靠的点对点连接,确保数据有序、完整地传输(如铁路轨道);HTTP是应用层协议,基于TCP构建,定义了Web服务交互的报文格式和规则(如货运订单)。TCP关注数据如何可靠送达,通过三次握手建立连接、流量控制等机制保证传输;HTTP关注传输内容的意义,提供请求/响应语义(GET/POST等)和无状态通信。补充:说一下什么是三次握手四次挥手
JVM字节码加载与存储中的细节
问题引出:为什么Java定义int型变量为32767时使用的是bipush32767,而定义int型变量为32768时使用的是ldc#4?在Java中,如果这样定义int型变量:publicclassTest{publicstaticvoidmain(String[]args){inti=0;intj=5;intk=6;intm=32768;intn=32767;}}变量对应的字节码文件内容是这样
JVM与Spring Boot核心解析
AIHacksCash
Java场景面试宝典 Java JVM Spring Boot
我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri
HashMap的Get(),Put()源码解析
Ttang23
哈希算法 散列表 算法
1、什么是HashMap?HashMap是Java中用于存储键值对(Key-Value)的集合类,它实现了Map接口。其核心特点是:无序性:不保证元素的存储顺序,也不保证顺序恒定不变。唯一性:键(Key)不能重复,若插入重复键会覆盖原有值。允许null:允许一个null键和任意数量的null值。非线程安全:相比HashTable,HashMap不支持同步,性能更高。2.核心数据结构:哈希表(Has
Java中的Tomcat,开启Web应用腾飞【基础版】
目录一、Tomcat初登场:揭开神秘面纱(一)啥是Tomcat(二)为啥要有Tomcat二、Tomcat的安装与启动:开启第一步(一)下载Tomcat(二)启动Tomcat三、Tomcat的目录结构:探秘内部布局(一)核心目录介绍(二)目录间的协同工作四、部署JavaWeb应用到Tomcat:让应用上线(一)打包Web应用为WAR文件(二)部署WAR文件到Tomcat五、Tomcat的配置优化:让
Java Web 之 Session 详解
艾伦~耶格尔
java 开发语言 后端 前端 session
在JavaWeb开发中,Session就像网站的专属记忆管家,为每个用户保管着重要的信息和状态,确保用户在网站的旅程顺畅无阻。场景一:想象你去一家大型超市购物,推着购物车挑选商品。这个购物车就如同Session,它记录了你的购物信息,方便你在结账时一次性结算。场景二:你在玩一个在线游戏,登录账号后,你的游戏进度、等级、装备等信息都会被保存在Session中,即使你中途关闭游戏,下次登录时依然可以继
老系统改造增加初始化,自动化数据源配置(tomcat+jsp+springmvc)
老系统改造增加初始化,自动化数据源配置一、前言二、改造描述1、环境说明2、实现步骤简要思考三、开始改造1、准备sql初始化文件2、启动时自动读取jdbc文件,创建数据源,如未配置,需要一个默认的临时数据源2.1去掉spingmvc原本配置的固定dataSource,改为动态dataSource2.2代码类,这里是示例,我就不管规范了,放到一起2.2.1DynamicDataSourceConfig
JavaScript之DOM操作与事件处理详解
AA-代码批发V哥
JavaScript javascript
JavaScript之DOM操作与事件处理详解一、DOM基础:理解文档对象模型二、DOM元素的获取与访问2.1基础获取方法2.2集合的区别与注意事项三、DOM元素的创建与修改3.1创建与插入元素3.2修改元素属性与样式3.2.1属性操作3.2.2样式操作3.3元素内容的修改四、DOM元素的删除与替换4.1删除元素4.2替换元素五、事件处理:实现页面交互5.1事件绑定的三种方式5.1.1HTML属性
V少JS基础班之第五弹
V少在逆向
JS基础班 javascript 开发语言 ecmascript
文章目录一、前言二、本节涉及知识点三、重点内容1-函数的定义2-函数的构成1.函数参数详解1)参数个数不固定2)默认参数3)arguments对象(类数组)4)剩余参数(Rest参数)5)函数参数是按值传递的6)解构参数传递7)参数校验技巧(JavaScript没有类型限制,需要手动校验)2.函数返回值详解3-函数的分类1-函数声明式:2-函数表达式:3-箭头函数:4-构造函数:5-IIFE:6-
Javaweb学习之Vue模板语法(三)
不要数手指啦
vue.js 学习 前端
目录学习资料前情回顾本期介绍(vue模板语法)文本插值Vue的Attribute绑定使用JavaScript表达式综合实例代码:学习资料Vue.js-渐进式JavaScript框架|Vue.js(vuejs.org)前情回顾项目的创建大家可以看这篇文章Vue学习之项目的创建-CSDN博客本期介绍(vue模板语法)首先,找到我们编写代码的地方找到自己项目的src文件夹,打开之后点击component
PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
java UI PHP android linux
╔-----------------------------------╗┆
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net .net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOP oracle mysql javaee G4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数 转换函数(核心) 数字函数 通用函数(核心) 字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
Mockito异常测试实例
bijian1013
java 单元测试 mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
GA与量子恒道统计
Bill_chen
JavaScript 浏览器 百度 Google 防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
angular.injector
boyitech
AngularJS AngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
使用Struts2.2.1配置
Chen.H
apache spring Web xml struts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
[职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
oracle连接(join)中使用using关键字
daizj
JOIN oracle sql using
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
C语言学习homework1
dcj3sjt126com
c homework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
Ehcache(02)——ehcache.xml简介
234390216
ehcache ehcache.xml 简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windows PHP unix Microsoft perl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
PO VO DAO DTO BO TO概念与区别
xp9802
java DAO 设计模式 bean 领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持