Maven的常用命令
-
mvn clean:清理之前构建生成的文件
-
mvn compile:编译项目的源代码
-
mvn test:使用合适的单元测试框架运行测试。这些测试代码位于src/test/java目录下
-
mvn package:打包编译后的代码到其分发格式,如JAR
-
mvn install:安装打包的代码到本地仓库,以供其他项目使用
-
mvn deploy:将最终的包复制到远程仓库,以共享给其他开发人员和项目
-
mvn validate:验证项目是否正确,所有必需的信息都可用
-
mvn help:显示关于使用的帮助
-
mvn version:显示Maven的版本信息
响应头的数据格式与对应的方法
HTTP响应头是服务器返回给客户端的一组键值对,用于描述HTTP响应的一些属性和状态。
-
Content-Type:指定返回的内容类型,如text/html,application/json等
-
Content-Length:指定返回的内容长度
-
Date:指定响应生成的日期和时间
-
Server:描述服务器的软件和版本
-
Set-Cookie:设置Cookie
-
Location:在3xx(重定向)响应中使用,指定客户端应跳转到的URL
-
Cache-Control:指定缓存策略,如no-cache,no-store,max-age等
-
Expires:指定响应的过期时间
-
Last-Modified:指定资源的最后修改时间,用于缓存验证
-
ETag:资源的特定版本的标识符,用于缓存验证
-
Content-Disposition:指定响应体的处理方式
-
Allow:指定响应支持的HTTP请求方法,常见的值有:
-
GET:获取资源
-
POST:提交数据进行处理
-
PUT:更新资源
-
DELETE:删除资源
-
jsp的内置对象与指令
JSP9个内置对象
-
request:HttpServletRequest对象,代表客户端的请求
-
response:HttpServletResponse对象,代表服务器的响应
-
pageContext:PageContext对象,提供了对JSP页面的各种属性的访问
-
session:HttpSession对象,代表客户端与服务器的会话
-
application:ServletContext对象,代表Web应用程序的上下文
-
out:JspWrite对象,用于向客户端发送输出
-
config:ServletConfig对象,包含了Servlet的初始化参数
-
page:Object对象,代表JSP页面本身,等同于Java中的this关键字
-
exception:Exception对象,代表在JSP页面中产生的异常(仅在错误页面中可用)
JSP指令
-
page指令
<%@ page %>
:定义页面依赖属性,如脚本语言、错误页面、缓冲需求等 -
include指令
<%@ include %>
:包含其他文件 -
taglib指令
<%@ taglib %>
:引入标签库
Cookie与Session之间的区别和常用的方法
区别
-
存储位置不同:Cookie存储在客户端,Session存储在服务器端
-
安全性不同:因为Cookie存储在客户端,所以更容易被篡改或窃取,相比之下,Session更安全
-
生命周期不同:Cookie可以设置长时间保持,而Session在用户退出或超时后就会失效
-
存储大小不同:Cookie的大小和数量有限,而Session只受服务器内存的限制
常用方法
-
创建Cookie:使用
response.addCookie(cookie)
方法创建并发送到Cookie客户端 -
读取Cookie:使用
request.getCookies()
方法获取客户端发送的所有Cookie,并使用.getName()
和.getValue()
等方法获取Cookie的名称和值 -
修改Cookie:通过修改Cookie的值或过期时间来修改Cookie内容
-
删除Cookie:使用
cookie.setMaxAge(0)
将Cookie的过期时间设置为0,然后通过response.addCookie(cookie)
方法发送给客户端,使其失效 -
创建Session:通过
request.getSession()
方法获取或创建Session对象 -
存储数据到Session:使用
session.setAttribute(name,value)
方法将数据存储到Session中 -
获取Session数据:使用
session.getAttribute(name)
方法获取存储在Session中的数据 -
删除Session对象:使用
session.removeAttribute(name)
方法删除Session中指定的数据 -
销毁Session:使用
session.invalidate()
方法销毁Session,通常在用户注销或超时后调用
JSTL与EL表达式
JSTL(JSP Standard Tag Library)
它是一组JSP标签的集合,用于简化JSP页面的开发。JSTL支持通用的、结构化的任务,如迭代、条件判定、XML文档操作、国际化支持、SQL操作以及用于访问集合、数组、日期等数据的标签等
-
JSTL核心标签库(c标签):
-
<c:if>
:条件判定标签,根据表达式的结果决定是否执行或输出内容 -
<c:forEach>
:循环标签,用于遍历集合或数组,并重复执行指定的内容 -
<c:set>
:设置变量的值 -
<c:choose>、<c:when>、<c:otherwise>
:用于实现多重条件的判断
-
-
JSTL函数标签库(fn标签):
-
<fn:length>
:获取集合或数组的长度 -
<fn:substring>
:截取字符串的一部分 -
<fn:trim>
:去除字符串两端的空白字符
-
EL(Expression Language)
是表达式语言,它提供了一种简单的方式来访问JavaBean组件,用于在JSP中访问和操作对象。EL表达式被包含在${}
中,可以用于获取和设置变量、调用方法、访问集合和数组等。
-
EL表达式:
-
${variable}
:获取变量的值 -
${object.property}
:访问对象的属性 -
${object.method()}
:调用对象的方法 -
${collection[index]}
:通过索引访问集合或数组的元素
-
监听器与拦截器的使用
监听器(Listener)和拦截器(Interpretor)是JavaWeb开发中常用的组件,可以在请求和响应的过程中执行一些额外的操作,如记录日志、验证用户权限、压缩响应数据等。
监听器
-
监听器是一种事件驱动的机制,可以在Web应用程序中监听Servlet、Session、Request等事件,并在事件发生时执行一些动作。
-
常用的监听器有:
-
ServletContextListener
:监听Web应用程序的启动和关闭事件 -
HttpSessionListener
:监听HttpSession对象的创建和销毁事件 -
ServletRequestListener
:监听ServletRequest对象的创建和销毁事件
-
-
监听器的使用步骤:
-
创建一个类并实现对应的监听器接口
-
实现监听器接口中定义的方法,在方法内编写需要执行的代码逻辑
-
在web.xml配置文件中注册监听器,将监听器和特定事件关联起来
-
拦截器
-
拦截器是基于Java的反射机制实现的,是一种面向切面编程的技术,可以在请求和响应过程中对请求进行拦截和处理,拦截器可以根据条件决定是否拦截请求,可以在目标方法执行前后,以及异常出现时执行一些操作。常用的拦截器有:
-
HandlerInterpretor
:拦截请求,并在请求前、请求后或响应后执行一些操作 -
Filter
:拦截请求,并在请求前或请求后执行一些操作
-
-
拦截器的使用步骤:
-
创建一个类并实现
HandlerInterpretor
接口 -
实现接口中的preHandler、postHandler和afterCompletion方法,分别对请求进行预处理、后处理和处理完成后的清理工作
-
在配置文件(如Spring的配置文件)中定义拦截器,并指定要拦截的URL模式
-
响应与请求JSON数据格式的定义
请求JSON数据格式
请求JSON数据格式用于客户端向服务器发送请求,并传递相关参数或数据
{ "field1": "value1", "field2": "value2", ... }
其中,"field1"、"field2"等表示具体的请求字段名称、对应的"value1"、"value2"等为该字段的值
响应JSONS数据格式
响应JSON数据格式用于服务器返回给客户端的响应结果
{ "status": "success/error", "message": "response message", "data": { "field1": "value1", "field2": "value2", ... } }
其中,"status"表示请求的处理状态,可以是"success"表示成功,或者"error"表示错误;"message"用于返回响应的附加信息;"data"用于存储实际的响应数据;"field1"、"field2"等表示具体的响应字段名称,对应的"value1"、"value2"等为该字段的值
原生JS的Ajax请求
在原生JavaScript中,可以使用XMLHttpRequest对象进行Ajax请求
//创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); //配置请求 xhr.open('GET','https//api.example.com/data',true);//设置请求方法和URL //设置请求头信息 xhr.setRequestHeader('Content-Type','application/json'); //监听状态改变事件 xhr.onreadystatechange = function(){ if(xhr.readyState === 4 && xhr.responseText === 200){//请求完成且响应成功 var response = JSON.parse(xhr.responseText); //解析响应数据 console.log(response); }else{ console.log("请求失败!"); } }; //发送请求 xhr.send();
以上代码中,我们:
-
首先创建了一个XMLHttpRequest对象
-
然后使用open方法设置请求的类型、URL地址以及是否异步
-
接着使用setRequestHeader方法设置请求头信息
-
最后使用send方法发送Ajax请求
在发送请求后,我们可以监听onreadystatechange事件,当请求状态发送改变时会触发该事件。
在事件处理函数中:
-
我们可以使用readyState属性获取当前请求的状态
-
使用status属性获取响应的状态码。