第十章 JSP简介

1. Session

//拿取专门用来封装权限信息的第三范围

HttpSession(中文翻译:会话)

Servlet中两种会话跟踪机制之一,另外一种是Cookie

HttpSession被翻译为会话,用来表示与用户交互的一段时间,HttpSession通过request.getSession()来创建,可以封装权限信息.用来证明用户的身份,从而避免不必要的一些身份验证工作

request.getSession()可以创建一个新的session或者在当前存在session的前提下,直接拿取已经存在的session

默认情况下用户与服务器交互,只可能存在一个session

创建session之后可以在session中封装信息,这个信息只要能证明用户的身份 资格等就统称为权限信息

session被创建之后默认最大不活动周期为1800s,在1800s以内用户封装的权限信息可以在不同的Servlet中拿取

通过

session.setAttribute(String,Object) 来封装信息

通过

session.getAttribute(String),来拿取信息

支持中文
创建之后从1800s开始倒计时,如果没有请求提交,则倒计时一直在消耗,倒计时结束,session销毁
内部的信息无法拿取
当用户再次提交请求时,倒计时重置。所以理论上用户如果一直在操作,则session一直存在

如果用户关闭浏览器,或者调用session.invalidate()则session立刻销毁

范围 对象 解释
第一范围 PageContext 一般不用来传递值,跳转立刻失效,通过技术手段
可以使第一范围读取其它范围得值
第二范围 HttpServletRequest 一般用来进行一次性的值的传递,A~~》B一锤子买卖,用来封装时效性数据,比如从数据库中查询的批量数据,如果跳转为重定向,则立刻失效,应为重定向不是同一次请求,无法取出
第三范围 HttpSession 一般用来封装权限信息,不局限任何跳转方式,只要在session没销毁前就可以, 一直读取或者封装.
第四范围 ServletContext 一般用来封装共享信息,全文只有一份,只要tomcat不关闭,永远有效

造成session失效的三种状况

  1. 超过最大不活动周期 默认1800s可以更改,存在40s左右的误差
  2. session.invalidate()立刻销毁
  3. 关闭浏览器

2. jsp指令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jMKDZEuq-1594441116057)(D:\Study\Yitu\前端\Jsp\JspDaysOfficial\JspDay1\attachment\JSP语法图.jpg)]

1. include指令

使用include指令元素引入一个外部页面到本页,本页称之为主页
而引入的页面称之为辅页
file:表示引入页面的路径
注意 主页引入辅页,但是辅页不能再去引入主页,会导致无穷死循环

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

2.page指令

  • page 指令元素共有12中写法,有血必须书写,又是否书写不重要
序号 标签 作用
1 language 当前页面的语言类型,默认java
2 contentType 页面软编码的一部分,在指令元素外书写request.setCharacterEncoding(“编码”)可以补全软编码
3 pageEncoding 设置页面的转换编码,jsp~~》servlet,注意默认是iso-8859-1不能书写任何中文,保存报错,要更改为utf-8或者gbk
4 import 表示本页面导包,多个包用逗号隔开,注意最精简不要少于三级包
5 session 当前页面是否支持session会话跟踪机制,默认支持,底层存在pageContext.getSession()源码,当我们打开jsp页面时session自动创建,这与html不同,html不会自动创建session
6 info 用来设置页面的一段信息,嵌套在页面中,一般是作者的签名等,通过getServletInfo()可以取出
7 buffer 当前页面的缓存,多大的文件保存在本地,默认8kb
8 autoFlush 可以设置当前页面自动刷新
9 isELIgnored 是否忽略EL表达式,不忽略
10 errorPage 当前页面如果出现异常自动跳转到哪个页面
11 isErrorPage 当前页面是否可以直接使用exception内置对象,默认不可以
12 isThreadSafe 当前线程是否安全,注意默认是true,单实例多线程,不安全!!

3.jsp九个内置对象

1. request对象

  • 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例

    序号 方法 说明
    1 object getAttribute(String name) 返回指定属性的属性值
    2 Enumeration getAttributeNames() 返回所有可用属性名的枚举
    3 String getCharacterEncoding() 返回字符编码方式
    4 int getContentLength() 返回请求体的长度(以字节数)
    5 String getContentType() 得到请求体的MIME类型
    6 ServletInputStream getInputStream() 得到请求体中一行的二进制流
    7 String getParameter(String name) 返回name指定参数的参数值
    8 Enumeration getParameterNames() 返回可用参数名的枚举
    9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组
    10 String getProtocol() 返回请求用的协议类型及版本号
    11 String getScheme() 返回请求用的计划名,如:http.https及ftp等
    12 String getServerName() 返回接受请求的服务器主机名
    13 int getServerPort() 返回服务器接受此请求所用的端口号
    14 BufferedReader getReader() 返回解码过了的请求体
    15 String getRemoteAddr() 返回发送此请求的客户端IP地址
    16 String getRemoteHost() 返回发送此请求的客户端主机名
    17 void setAttribute(String key,Object obj) 设置属性的属性值
    18 String getRealPath(String path) 返回一虚拟路径的真实路径
    19 String getContextPath() 拿取/工程名

4.EL表达式

1.基本运算

${"3+2"}=${3+2} // 3+2=5
${3>2}           //true
${3>2 ? true:false} //true

2.范围取值

EL表达式的四范围为pageScope,requestScope,sessionScope,applicationScope,当没有一样的键的时候,范围可以省略,当省略时,有多个范围的,省略范围的取值拿取现存范围中范围最小的。

 <%pageContext.setAttribute("elena", "elenaPage");request.setAttribute("elena", "elenaRequest");session.setAttribute("elena","elenaSession");application.setAttribute("elena", "elenaApplication");
%>
<!--java代码-->
<%=pageContext.getAttribute("elena") %>
<%=request.getAttribute("elena") %>
<%=session.getAttribute("elena") %>
<%=application.getAttribute("elena") %>
<br />
<!--El表达式-->
${pageScope.elena }  <br />
${requestScope.elena }  <br />
${sessionScope.elena }  <br />
${applicationScope.elena }
${elena}   //page

3. 判断是否为空

是空返回true,不是返回false

${empty sessionScope.zhangsan}

4. 接收值

  1. 接收链接或者表单传递过来的值

    接收值(java):<%=request.getParameter("etoak") %>
    <br />
    <!--param必须写-->
    接收值(el表达式):${param.etoak}
    
  2. 从web.xml中取值

    <h3>从web.xml取值</h3>
    java取值:<%=application.getInitParameter("罗永浩") %> <br />
    El:${initParam.罗永浩 }
    

5. 拿取自定义数据类型的值

可以省略范围直接通过 key.value来取值,有点类似 js

public class Game{private Integer id;private String name;private Integer price;private String seller;//全参构造器和getset方法
}
<%Game game = new Game(1,"动物之森",500,"任天堂");request.setAttribute("mygame", game);//这里不能使用重定向,否则范围失效request.getRequestDispatcher("show4.jsp").forward(request, response);%>
<h3>拿取自定义数据类型中的属性值</h3>使用java:游戏ID<%=((Game)request.getAttribute("mygame")).getId() %>游戏名<%=((Game)request.getAttribute("mygame")).getName() %>游戏售价<%=((Game)request.getAttribute("mygame")).getPrice() %>发行商<%=((Game)request.getAttribute("mygame")).getSeller() %><hr />游戏ID:${requestScope.mygame.id }游戏名:${requestScope.mygame.name}售价:${mygame.price }发行商:${mygame.seller}

6. EL注意点

<% int i = 3%>
java:<%=i%>   //3
EL:${i}   //什么都不显示
EL是通过键来拿取值的,上边的i是值,想要拿取到i
需要添加范围随便写
request.setAttribute("i",i);

5. JSTl

  • 全称Jsp Standard Tag Lib ,jsp第二代标签库,需要导入jar包

    <!-- 通常用c来表示JSTL-->
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    

1. 赋值 <c:set>

属性 含义
var
value
scope 范围
  • 存在种范围page,request,session,application
<c:set var="elena" value="elenaPage" scope="page"></c:set>

2. 取值<c:out>

属性 描述
value 要输出的信息,支持字符串直接输出,Java代码以及EL表达式
default 如果value输出失败,默认显示的值
<c:out value="这里直接通过value输出的值"></c:out><c:out value="<%=str %>"></c:out><c:out value="${pageScope.elena}"></c:out>
<c:out value="${requestScope.elena}"></c:out>
<c:out value="${sessionScope.elena}"></c:out>
<c:out value="${applicationScope.elena}"></c:out>
<!--不知名范围的拿取现存范围中最小的-->
<c:out value="${elena}"></c:out>   //page<c:out value="${requestScope.elena}" default="删除成功!"></c:out>

3.删除<c:remove>

属性 描述
var 要删除的键
scope 要删除的键值对的范围,注意如果不指明范围,则只要符合全部删除
<c:remove var="elena" scope="request" />

4.循环遍历 <c:forEach>

属性 描述
items 表示被遍历的循环体,可以书写Java代码,也可以从el表达式中拿取
var 表示每个被遍历的对象的key值,可以随意书写,范围默认是pageContext最小范围
begin 起始下标
end 结束下标
//<c:forEach>相当于
for(Game ge:(List)request.getAttribute("mylist")){//此处pageContext范围是标签固定范围pageContext.setAttribute("suibianxie",ga);
}
<%List<Game> list = new ArrayList<Game>();list.add(new Game(1,"动物森友会",530,"任天堂"));list.add(new Game(2,"生化危机3",440,"卡普空"));list.add(new Game(3,"FF7Re",500,"SE"));list.add(new Game(4,"骑马与砍杀2",300,"MB"));list.add(new Game(5,"仁王2",390,"光荣"));list.add(new Game(6,"十三机兵防卫圈",400,"香草社"));request.setAttribute("mylist", list);
%>

<c:forEach items="${requestScope.mylist}" var="suibianxie" begin="1" end="3"><tr><td><c:out value="${pageScope.suibianxie.id}"></c:out></td><td><c:out value="${suibianxie.name}"></c:out></td><td><c:out value="${suibianxie.price}"></c:out></td><td><c:out value="${suibianxie.seller}"></c:out></td></tr>
</c:forEach>

注意:items后边写El表达式一定要写完整,不然会找不到属性,切记切记

5.流程控制<c:choose>

相当于Java中的if else,可以不书写otherwise,但是不能不书写when.

如果互相嵌套,则c:choose必须和c:when在一起

<c:choose><c:when test="${3>10}"><c:out value="输出这里了吗?"></c:out></c:when><c:otherwise><c:out value="最终输出了这里!!!!!"></c:out></c:otherwise></c:choose><c:choose><c:when test="${3>10}"><c:out value="输出这里了吗?"></c:out></c:when><c:otherwise><c:choose><c:when test="${2>1}"><c:out value="最终输出了这里!!!!!~~~~~~"></c:out></c:when></c:choose></c:otherwise></c:choose>

6.Jsp同步分页

所谓分页就是从数据库中拿取一部分的数据

1.分页的类型

  1. 假分页

一次将所有数据从数据库中取出,用户需要哪几条就显示哪几条

  1. 真分页

用户需要哪几条就从数据库中取出哪几条

2. 分页公式

select 字段 from 表 limit x,y
## x:起始索引值
## y:一共显示条

3. 分页四要素

步骤 要素 结果 建议变量名
1 总记录数 dao层获取 allRecord
2 每页记录数 自己设置 pageRecord
3 总页数 (allRecord + pageRecord - 1) / pageRecord allOage
4 当前页 默认1 currentPage

分页完成后要进行下边的操作

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="com.etoak.dao.ComputerDaoIf,com.etoak.dao.ComputerDaoImpl,com.etoak.po.*,java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Jsp同步分页</title><style>body{background-color:silver;}div#container{width:900px;margin:0 auto;text-align:center;}table,tr,th,td{border:solid 2px gray;}table{width:100%;text-align:center;border-collapse:collapse;box-shadow:15px 15px 15px silver;}thead{background-color:coral;    }tbody{background-color:whitesmoke;color:navy;}input[type=button]{border-radius:15px;width:60px;background-color:pink;}a:hover{cursor:pointer;color:deeppink;text-decoration:underline;}a{color:navy;text-decoration:none;}</style></head><body><%--在对数据库的最基本操作中 增删查改 是基础的四门功课分页:拿取一部分数据~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分页的类型:假分页一次将所有的数据从数据库取出,用户需要哪几条就显示哪几条真分页用户需要哪几条就从数据库中取出哪几条~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   分页公式select 字段 from 表 limit x,y;x:表示起始索引值y:表示一共显示几条记录~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分页四要素不管使用何种分页方式,何种技术,只要拿取了以下四个数据,则分页可得1:总记录数                dao2:每页记录数              自己订3:总页数                    (总记录数+每页记录数-1)/每页记录数4:当前页                  默认值是1,随着用户的操作不断的更改,是一个变量~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分页公式结合分页四要素select 字段 from 表 limit (当前页-1)*每页记录数,每页记录数; List<Computer> list = dao.queryPage((当前页-1)*每页记录数,每页记录数);        --%><%--<c:choose>判断session范围中是否存在权限信息<c:when test="${!empty u}">--%><%ComputerDaoIf dao = new ComputerDaoImpl();//1:拿取总记录数Integer allRecord = dao.queryCount();//2:设置每页记录数Integer pageRecord = 5;//3:拿取总页数Integer allPage = (allRecord+pageRecord-1)/pageRecord;//4:设置当前页默认值Integer currentPage = 1;//接受表单提交的值String value = request.getParameter("cup");/*第一次打开本页面肯定为null,从上往下执行,表单还未提交*/if(value!=null){currentPage = Integer.parseInt(value);}List<Computer> list = dao.queryPage((currentPage-1)*pageRecord,pageRecord);pageContext.setAttribute("mylist",list);%><div id="container"><table><caption>计算机售价明细</caption><thead><tr><th>ID</th><th>品名</th><th>售价</th><th>生产商</th><th>CPU型号</th><th>GPU型号</th><th>硬盘容量</th><th>内存容量</th><th>产地</th><th>发售时间</th><%--只要不是平民登录--%><c:if test="${u.level!='0'}"><th colspan="3">操作</th></c:if></tr></thead><tbody><c:forEach items="${mylist}" var="co"><tr><td><c:out value="${co.id}"></c:out></td><td><c:out value="${co.name}"></c:out></td><td><c:out value="${co.total}"></c:out></td><td><c:out value="${co.production}"></c:out></td><td><c:out value="${co.cputype}"></c:out></td><td><c:out value="${co.gputype}"></c:out></td><td><c:out value="${co.disktype}"></c:out></td><td><c:out value="${co.ramtype}"></c:out></td><td><c:out value="${co.location}"></c:out></td><td><c:out value="${co.sellertime}"></c:out></td><c:if test="${u.level!='0'}"><td><a href="delcomputer?id=${co.id}&info=fake">假删除</a></td><td><a href="delcomputer?id=${co.id}&info=true">真删除</a></td><td><a href="computer_update.jsp?id=${co.id}">编辑</a></td>   </c:if></tr></c:forEach></tbody></table><br /><form action="computer_show.jsp"><input type="hidden" name="cup" /><input type="button" value="首页" οnclick="change(1)" <%=currentPage==1?"disabled":"" %> /><input type="button" value="上一页" οnclick="change(<%=currentPage-1 %>)" <%=currentPage==1?"disabled":"" %> /><input type="button" value="下一页" οnclick="change(<%=currentPage+1 %>)"<%=currentPage==allPage?"disabled":"" %> /><input type="button" value="末页" οnclick="change(<%=allPage %>)" <%=currentPage==allPage?"disabled":"" %> /></form><a href="computerquit">用户登出</a><%--1)普通用户只能看到用户登出链接2)管理员可以看到查看全部普通用户资料链接,点击之后跳转到computer_usershow.jsp页面,此页面存在一个表格,内部是所有普通用户资料。实现分页功能,实现真删除,假删除,编辑功能,提升权限(普通用户=》管理员)3)超级管理员可以看到查看全部管理员用户资料链接,点击之后跳转到computer_adminshow.jsp页面,此页面存在一个表格,内部是所有管理员资料。实现分页,假删除,编辑功能,降低权限(管理员=》普通用户)要求:Jsp页面使用EL表达式和JSTL标签,尽量使用Servlet调用dao层(分页页面可以直接在Jsp页面调用dao层)所有页面必须使用权限控制,非登录人员登入直接跳转到登录页dao层谨慎书写,如果之前已经写过,可以不再书写,工厂,实体类等不需要再次书写--%></div><script>/*此处传递过来的形参就是点击按钮之后当前页的值*/function change(cr){/*document.forms:表示拿取全文中所有的表单,由于这里只有一个表单所以添加[0]表示拿取的就是全文中的唯一表单.cup.value=cr表示将隐藏域的值赋值成cr也就是当前页的值*/document.forms[0].cup.value = cr//使用js提交表单document.forms[0].submit()}</script><%-- </c:when> --%><%-- <c:otherwise> --%><%--此处是放置不经过登录直接在浏览器地址栏输入此页面,逃避登录步骤由于没有从session中无法获得权限信息,所以进显示以下内容--%><!-- <p>您还没有登录,请您先登录</p><hr /> --><%-- </c:otherwise> --%><%-- </c:choose> --%></body>
</html>

7. 过滤器[filter]

Servlet
> Filter在Servlet中可以设置一个或者多个过滤器,这些过滤器起到过滤的作用,在Servlet执行doGet()或者执行doPost()
> 之前过滤器会挡在之前首先执行过滤工作,例如可以设置编码,可以查看权限
> init():在打开tomcat时,整个工程中所有的过滤器全部启动,仅仅执行一次
> doFilter():当拦截的Servlet要执行之前支持过滤器的doFilter(),注意在doFilter()中存在
> 一个chain.doFilter()方法,如果过滤器过滤结束,则支持此方法之后继续执行Servlet实例
> 而如果过滤失败,不支持chain.doFilter()则后面的Servlet不再执行了
> destroy():关闭tomcat时执行
>
> 多个过滤器:
> 打开tomcat时:
> Servlet的init()
> 过滤器1的init()
> 过滤器2的init()

请求发送时:过滤器1的doFilter()执行到chain.doFilter(request,response)时开始执行过滤器2的doFilter()执行到chain.doFilter(request,response)时开始执行Servlet的doGet()||doPost()之后执行过滤器2的chain.doFilter(request,response)之后的代码过滤器1的chain.doFilter(request,response)之后的代码这叫做过滤链过滤器可以配置在web.xml中或者使用Servlet3.0中注解直接配置在Filter类中    <filter><filter-name>suibianxie</filter-name><filter-class>监听器的类的地址</filter-class><init-param><param-name>私有参数名</param-name><param-value>私有参数值</param-value></init-param></filter><filter-mapping><filter-name>suibianxie</filter-name><url-pattern>拦截的Servlet或者jsp路径</url-pattern></filter-mapping>


​ 过滤顺序:
​ 如果配置在web.xml中
​ 注意过滤顺序是web.xml中从上到下过滤
​ 注意servlet一定放置在最后

​ 如果使用Servlet3.0注解
​ 官方至今没有提供任何设置顺序的解决方案,API文档中没有任何方法可以设置顺序
​ 非官方提出的说法按照过滤器字符排列顺序,例如
​ A.java肯定在B.java之前执行
​ FilterA.java肯定在FilterB.java之前执行
​ Filter0Etoak.java肯定在Filter1Etoak.java之前执行
​ 未经过官方认定

1. 设置编码的

package com.etoak.filter;import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;/**    urlPatterns="这里表示要拦截的请求"*  注意如果设置为 /* 则表示拦截所有请求*  initParams={*     @WebInitParam(name="表示这个过滤器的键",value="表示这个过滤器的值"),*      @WebInitParam(name="表示这个过滤器的键",value="表示这个过滤器的值"),*  }*  在WebInitParam中部署的私有参数只有本类可以拿取*      可以通过以下几种手段拿取*   ServletConfig config = this.getServletConfig();*   String value = config.getInitParameter("键");* *      或者通过过滤器中的参数FilterConfig来拿取*         * */
@WebFilter(urlPatterns="/*",initParams={@WebInitParam(name="encode",value="utf-8"),@WebInitParam(name="thisiskey", value="thisisvalue")
})
//urlPatterns={"/UserManagerServlet","/index.jsp"}public class Filter1Encoding implements Filter {private String code;public void destroy() {System.out.println("编码过滤器的destroy~~~");}/**     ServletRequest和ServletResponse是*  HttpServletRequest与HttpServletResponse的父接口* *  注意部分方法无法直接调用*      重定向和请求转发无法直接使用,需要通过多态等进行转换* */public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("编码过滤器开始过滤啦!!~~~");request.setCharacterEncoding(code);chain.doFilter(request, response);}//当打开tomcat时直接执行此方法public void init(FilterConfig fConfig) throws ServletException {System.out.println("编码过滤器启动啦!");code = fConfig.getInitParameter("encode");System.out.println(code);}}

2. 设置权限的

package com.etoak.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.etoak.po.User;@WebFilter(urlPatterns= {"/delcomputer","/computerquit","/computerupdate","/computer_show.jsp","/computer_update.jsp"})
public class Filter2Authority implements Filter {public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("权限过滤器开始过滤啦!!~~~");HttpServletRequest req = (HttpServletRequest)request;HttpSession session = req.getSession();User u = (User)session.getAttribute("u");if(u==null) {HttpServletResponse res = (HttpServletResponse)response;res.sendRedirect(req.getContextPath()+"/computer_log.jsp");return;}chain.doFilter(request, response);}public void init(FilterConfig fConfig) throws ServletException {System.out.println("权限过滤器启动啦!");}}

3. 注意点

  • urlPatterns=“这里表示要拦截的请求”
  • 注意如果设置为 /* 则表示拦截所有请求
  • initParams={
  • @WebInitParam(name=“表示这个过滤器的键”,value=“表示这个过滤器的值”),
  • @WebInitParam(name=“表示这个过滤器的键”,value=“表示这个过滤器的值”),
  • }
  • 在WebInitParam中部署的私有参数只有本类可以拿取
  • 可以通过以下几种手段拿取
  • ServletConfig config = this.getServletConfig();
  • String value = config.getInitParameter(“键”);
  •    或者通过过滤器中的参数FilterConfig来拿取
    
  • */

JSP九大内置对象及其使用教程相关推荐

  1. JSP九大内置对象...

    原文地址:http://blog.sina.com.cn/s/blog_6267d71d0100pryr.html JSP九大内置对象: 1.Request, 2.Response,3.Out,4.S ...

  2. 【Spring】JSP 九大内置对象、作用域复习

    博客: 总结 JSP的四大域对象.Servlet的四个作用域: pageContext.request.session.application JSP 九大内置对象和四大作用域复习 名称 类型 含义 ...

  3. 面试之JSP九大内置对象和JSP四大作用域

    jsp 九大内置对象和其作用详解 JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config. ...

  4. JSP九大内置对象(转载)

    JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1. ...

  5. jsp九大内置对象与servlet中java对象

    jsp九大内置对象 request对象 : getParameter(String name)获取表单提交的数据 getParamegerNames() 获取客户端提交的所有参数名 getAttrib ...

  6. JSP九大内置对象和四大作用域和Servlet的三大作用域对象

    一.JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 内置对象特点: 由JSP规范提供,不用编写者实例化. 通过Web容器实现和管理 所有 ...

  7. 小汤学编程之JavaEE学习day03——JSP组成结构、JSP原理、JSP生命周期、JSP九大内置对象、四大作用域、JSP的MVC模式

    一.JSP组成结构 二.JSP的原理 1.JSP的运行原理     2.分析JSP所生成的Servlet代码     3.JSP的执行过程 三.JSP生命周期 四.JSP九大内置对象 五.JSP四大作 ...

  8. Jsp学习总结(1)——JSP九大内置对象和四种属性范围解读

    一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效 request:在一次服务请求范围内,服务器跳转后依然有效 session:-在一次会话范围内 ...

  9. JSP九大内置对象四大作用域

    JSP简介 JSP(Java Service Page 即java服务器页面)也就是对Servlet的一种封装,每次都是先转译成Servlet才能执行,因为Servlet写HTML时每一句都要用res ...

  10. JSP——九大内置对象和其四大作用域

    一.JSP九大内置对象: JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象. Request:代表的是来自客户端的请求,例如我们在FORM ...

最新文章

  1. 大佬来告诉你在遇到B站崩了,如何防止类似事故的出现?
  2. VS2017配置opencv教程(图文详解)
  3. 超炫jQuery测试答题功能
  4. vue-cli 3.0 怎么配置 webpack.ProvidePlugin
  5. 提搞网站访问速度可做哪些优化
  6. tbopen链接生成工具_筛选了100个配色工具后,我挑出了这25个
  7. [置顶]常用存储过程集锦
  8. 邯郸计算机理工学院,邯郸理工学校2021年招生简章
  9. VBA连接MySQL数据库以及ODBC的配置(ODBC版本和MySQL版本如果不匹配会出现驱动和应用程序的错误)...
  10. 获取emf图片格式的方法
  11. html qq在线状态,qq各种在线状态意思
  12. SSD算法详解 及其 keras实现
  13. 视频超分修复,让重温经典影片有了新的可能
  14. 虚幻引擎_矢量场初探
  15. 囚徒困境困境_社会困境两部恐怖电影主演
  16. 【单片机】汇编指令入门学习|单片机启动代码汇编
  17. 第七届中国云计算大会 | 首批主会演讲嘉宾和议题公布(表)
  18. 小程序连接低功耗蓝牙
  19. android录制avi视频
  20. Windows 10 Creators Update即将上线 Cortana又新增了哪些新功能?

热门文章

  1. 正定矩阵与半正定矩阵定义与判别
  2. fseek函数的用法
  3. 找工作----C++面试题库
  4. VAR模型Stata实例操作
  5. 手把手系列--华邦W25Q64JV Flash操作指南
  6. 阿里云企业邮箱用smtp发送邮件失败解决
  7. 利用WPF做出的简单界面布局一
  8. 查看DELL服务器保修期
  9. 如何解决端口冲突的问题???
  10. 计算机算法设计与分析(1-6章 复习笔记)