文章目录
1. ServletContext对象
ServletContext对象(接口—代表整个web application : 全局对象)
web应用程序启动的时候就会创建ServletContext对象
四个作用
(1) 获取上下文路径
public String getContextPath()
(2) 获取web.xml中的全局参数
<!--全局参数-->
<context-param>
<! --参数名称-->
<param-name>encoding</param-name>
<!--参数值-->
<param-value>utf-8</ param-value>
</context-param>
//获取全局对象
ServletContext servletContext = this.getServletContext();
// String getInitParameter(String var1); 通过初始化全局参数名称获取参数值
// Enumeration<String> getInitParameterNames();:全局对象获取所有初始化的参数名称
String encoding = servletContext.getInitParameter("encoding");
(3) 可以去作为请求转发
//1)先获取全局对象
ServletContext servletContext = this.getServletContext();
//2)获取分发器对象
public RequestDispatcher getRequestDispatcher(String path);
//path参数:要转发的路径 不需要携带上下文路径 (属于服务器行为)
RequestDispatcher rd = servletContext.getRequestDispatcher("/adv.html");
//RequestDispatcher 请求转发器对象中 ----
//public void forward(ServletRequest request, ServletResponse response)
rd.forward(request,response);
(4)可以作为域对象
就是在不同servlet之间进行数据传输
请求转发特点:
1)地址栏没有变化,永远是后端地址
2)请求转发可以访问WEB-INF资源文件
3)实际业务中,如果后端需要跳转到前端页面 jsp页面—jsp页面想要获取后端的数据,此时必须使用请求转发
2. JSP
Java Servlet Page: Java服务器页面 可以响应客户端发送的请求
它可以被可以翻译成.java文件—(web容器进行翻译)
.java—(jvm编译为.class文件)
<% %> : jsp脚本
<%= %> : jsp输出表达式
2.1 JSP的三大指令
1. page指令
page指令常见属性
contextType="text/html;charset=UTF-8" 当前页码编码类型
language="java" 支持的语言
buffer="8kb" jsp使用流的方式将内容写入浏览器,默认缓冲区大小为8kb
errorPage="指定错误页面" 出现异常后,自定跳转到错误页面
isErrorPage="false" 指定当前页面是否为错误页面
isELIgnored="true" 是否启用EL表达式 默认为true 启用${}
autoFlush="true" 是否自定刷新 默认true
import="java包名" 导入Java包
2. include指令
<%@include file="指定页面"%>
静态包含:jsp页面使用的时候,将一些公共页面导入到指定页面
file属性:导入指定的页面路径
3. taglib
引入核心库
prefix="前缀名称"
uri:c标签的网络地址
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2.2 JSP的九大内置对象
PageContext: pageContext 在某个jsp页面中有效
HttpServletRequest: request 请求对象:在一次请求中有效
HttpSession: session 在一次会话中有效
ServletContext: application 全局对象,在整个web application有效
HttpServletResponse: 响应对象 给浏览器响应数据
ServletConfig : servlet配置对象
JspWrite: Jsp的输出流 可以给浏览器中写入内容
Object page : 代表jsp对象
Throwable t : jsp的异常对象
2.3 JSP的EL表达式
EL(是Expression Language的缩写),使用EL对JSP输出进行优化,可以使得页面结构更加清晰,代码可读性高,也更加便于维护。
使用EL表达式的目的:从作用域中获取指定属性名的共享数据
<%@ page isELIgnored="true"%> 表示是否禁用EL语言, TRUE 表示禁止.。FALSE 表示不禁。
EL表达式的语法 : ${EL表达式}
内置对象
pageScope PageContext域
requestScope HttpServletRequest域
sessionScope HttpSession域
applicationScope ServletContext域
2.4 JSP核心标签库以及常用标签
<c:if test="${}"> --->相当于java中if语句,如果成立,执行语句体
</c:if>
<c:choose> 类似 Java语言 选择结构语句
<c:when test="<boolean>">
...
</c:when>
<c:when test="<boolean>">
...
</c:when>
...
...
<c:otherwise>
...
</c:otherwise>
</c:choose>
<c:forEach items="获取的数据">
</c:forEach>
items属性:从后端集合数据 ${域对象中存储属性名称}
var属性:循环中的变量名
varstatus: 内置的循环中变量名的状态属性
属性值.index :获取到的角标 (从0开始)
属性值.count :获取到的序号(从1开始)
<%--el表达式 有关键字 empty
${empty 域对象属性名称}
--%>
<c:if test="${not empty list}">
<h3>list集合不为空</h3>
</c:if>--%>
3. 域对象
-
page域 PageContext 在某个jsp页面有效
-
request域 HttpServletRequest 在一次请求中有效
-
session域 HttpSession 在一次会话中有效
-
application域 ServletContext 全局对象在整个web application有效
//通用方法
public void setAttribute("属性名称", 实际内容Object obj); //给域对象中存储属性以及对应的内容
public Object getAttribute("属性名称"); //通过域对象中保存的属性名称获取内容
public void removeAttribute("属性名称"); //移除域对象中的数据
4. 重定向以及重定向和请求转发的区别
1)浏览器发送请求到服务器端,服务器端接收---解析某个Servlet
设置响应头“location",以及location对应的内容“/上下文路径/web目录资源文件"
response.setHeader("location", "上下文路径")
设置响应状态码 302---"进一步请求"
response.setStatus(302);
2)将location头以及302状态码---响应给浏览器,浏览器接收到之后,看到302状态码----
"再一次请求",请求地址就是location对应的内容
3)最终完成页面跳转
简写格式HttpResponse对象--->void sendRedirect(String var1) throws IOException;重定向
response.sendRedirect(request.getContextPath()+" /adv.jsp");
请求转发和重定向的区别
-
地址栏是否有变化
请求转发地址栏不变化
重定向地址栏会变化 -
整个过程中request对象是否一致
请求转发整个过程一致,所以使用request域存储数据,请求转发都某个jsp页面可以从request域中取出数据${域中的属性名称}
整个过程两次request对象不一致,使用request域存储数据,重定向到页面在request域中获取不到,仅仅是完成页面跳转 -
是否能够访问WEB-INF下的资源文件
请求转发可以访问WEB-INF下的文件(只能请求转发访问)重定向访问不到
5. MVC三层架构思想
M:model 业务模型
最基本的业务模型: 实体类 com.x.pojo
com.x.service—>业务代码,完成业务逻辑
com.x.dao—>持久层代码,完成对数据库的crud
V:view 视图层
目前技术就是使用jsp的jstl标签库展示数据
C:controller 控制器
前端请求后端的连接器(中间层)
6. Boot Strap前端框架
常用样式组件
生产环境—官网下载boostrap.css/bootstrap.js/字体等等
在某个html/jsp使用boostrap—需要先导入jQuery
全局CSS样式
栅格系统 网页布局
表单
class="form-group" 将label元素和input/select标签 放在表单控件中
水平排列表单 <form class="horizontal">
按钮
class="btn btn-default" 默认预定义样式按钮
class="btn btn-primary" 首选项
class="btn btn-danger" 危险信息类的按钮
class="btn btn-success" 成功标识
class="btn btn-info" 一般信息样式
class="btn btn-warning" 警告类的
表格
响应式表格 div class="table-responsive"
基本表格样式 class="table"
条纹状表格样式 .table-striped
带边框 .table-border
鼠标悬停响应 .table-hover
紧缩表格 .table-condensed
图片
响应式图片 class="img-responsive"
class="img-rounded" 圆角
class="img-circle" 圆形
class="img-thumbnail" 相框样式
组件
按钮式下拉菜单
<div class="btn-group">
分页组件
<div>
<nav>
<div/>
导航条组件
7. Maven
maven项目---- 简称 “POM” Project Object Model
针对 项目–清除clean 编译compile deploy 部署, package 打包(打成war包)
install 安装项目到本地仓库上
目前主要作用:
管理jar包的版本号, jar包坐标地址
8. Ajax
原生ajax四个操作步骤
1) 创建浏览器代理对象
var xhttp;
if (windows.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
//code for IE6, IE5
xhttp = new ActiveXObject("Microsoft.XMLHttp")
}
2)建立连接
open(method, url, async)
参数1:请求方式
参数2:请求的后端地址 get提交可以在url后加?key=value
参数3:是否是异步 默认值为true(异步)
xhttp("GET", "url", true)
post提交必须设置请求头
xhttp.setRequestHeader("Content-type " ,"application/x-wwW-form-urlencoded");
3)发送
send() 用于GET
send(String) 用于POST
4)服务器响应数据
每当readyState 发生变化时就会调用onreadystatechange函数。
readyState 为4 , status 为200时,响应就绪:
// onreadystatechange :服务器响应到前端的回调函数
xhttp. onreadystatechange = function() {
//只要判断响应状态readyState以及服务器响应的状态码200响应完成
if(this.readyState==4 && this.statusF=200){
//responseText:服务器响应过来的字符串文本格式
var content = this.responseText ;
//服务器响应过来的字符串数据弹框
alert(content) ;
}
}
jQuery的ajax方法
$.ajax(){
url::一个用来包含发送请求的URL字符串。
settings:ajax请求设置。所有选项都是可选的。
//url: "/day49_ajax_war/ajaxServlet?username=赵又廷" , //访问后端接口地址
url: "/day49_ajax_war/ajaxServlet" ,
//type:"get", //请求的方式 默认是get 可以url地址后面携带请求参数
type:"post",
data: {username:"xxx}, // json格式{"key":value} , //给服务器发送的数据 post提交 发送的数据
success:function(responseData){ //响应成功的回调函数 responseData服务器给响应的过来数据
alert(responseData) ; //
},
error:function (responseData) {//响应失败的回调函数
//完成响应失败的逻辑
},
dataType: "text" //服务器响应过来的数据格式 json/html/text文本/xml...
}