Jsp基础总结

  • 执行过程

当浏览器访问如Html,css,js,图片等静态等资源等时候,服务器找到相应等资源,通过响应实体,转换成流,直接返回给浏览器,让浏览器解析出来;

但是如果执行jsp时,因为jsp里可以写java代码,所以不会直接把jsp中的内容直接发送给浏览器,而是要经过翻译,翻译成servlet程序,然后执行完之后向浏览器输出一个html网页

当我们编译jsp的时候,会翻译成servlet,并且假如我们用tomcat的时候,会在work目录下对应工程里生成java文件

会把我们的jsp中的java代码在服务器端转变成执行结果,并和其他的html标签一起返回给浏览器。

  • jsp四大作用域和九大内置对象

page范围:只在一个页面保留数据(javax.servlet.jsp.PageContext(抽象类))

request范围:只在一个请求中保存数据(javax.servlet.httpServletRequest)

Session范围:在一次会话中保存数据,仅供单个用户使用(javax.servlet.http.HttpSession)

Application范围:在整个服务器中保存数据,全部用户共享(javax.servlet.ServletContext)

他们的作用范围:

page<request<Session<Application

out对象:用于向客户端、浏览器输出数据。
request对象:封装了来自客户端、浏览器的各种信息。
response对象:封装了服务器的响应信息。
exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
config对象:封装了应用程序的配置信息。
page对象:指向了当前jsp程序本身。
session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
pageContext对象:提供了对jsp页面所有对象以及命名空间的访问。

  • jsp指令

用来指挥jsp解析引擎(解析和翻译jsp)如何翻译当前jsp文件到servlet

page指令

声明一些基本属性信息,如:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@page import="java.util.Date"%>

通知jsp使用java语言,使用utf-8编码,使用了Date库使用到一些包或者库

taglib指令 

  • 在引入JSTL标签库或者其他自定义的标签库时,需要先引入taglib指令先引入标签库
  • jsp+EL表达式

为了使JSP写起来更加简单。它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。

EL只可以取数据,不可以遍历数据;${ }

  • jsp标签与JSTL标签库

首先在jsp文件中导入

    <!--这里用alt+/来导入  -->

<%@taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core"%>

<!-- 这里用alt+/来导入 -->
<h1>C:set取字符练习</h1>
<C:set var="name" value="1231231231212312312" scope="request"></C:set>
${name }

<h1>C:set取map数据练习</h1>
<%
Map map=new HashMap();
map.put("name", "苏苏");
map.put("sex", "男");
request.setAttribute("map_set", map);
%>
${map_set.name}
${map_set.sex}
<h2>用C:set修改map中的值</h2>
<C:set target="${map_set}" property="name" value="健健"></C:set>
${map_set.name }

<h1>C:if标签</h1>
<C:if test="${100<50 }">yes </C:if>
<C:if test="${!(100<50) }">no</C:if>

<h1>C:forEach循环遍历List</h1>
<%
List<String>list=new ArrayList();
for(int i=0;i<5;i++){
	list.add(i+""+i);
}
request.setAttribute("lists", list);
%>
<C:forEach items="${lists }" var="str">${str } <br/></C:forEach>

<h1>C:forEach循环遍历HashMap</h1>
<C:forEach items="${map_set}" var="str">
${str }<br/>
</C:forEach>
<C:forEach items="${map_set}" var="str">
${str.key }<br/>
</C:forEach>
<C:forEach items="${map_set}" var="str">
${str.value }<br/>
</C:forEach>

<h1>C:forEach遍历1到100之间的偶数,并用逗号分隔</h1>
<C:forEach begin="0" end="100" var="i">${i },</C:forEach>
<br/>
<C:forEach begin="0" end="100" var="i" step="2" varStatus="status">${i },</C:forEach>
<br/>
<C:forEach begin="0" end="100" var="i" step="2" varStatus="status">
${i }
<C:if test="${!status.last })">,</C:if>
</C:forEach>
  • 这里有必要说一下<C:forEach begin="0" end="100" var="i" step="2" varStatus="status"> ,这个varStatus,可以取first表示取第一个,last表示取最后一个,count表示当前是第几个,如果用下标的话,可以用count-1;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小苏的小小苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值