学习记录

EL,JSTL,监听器,过滤器,Session的钝化与活化

#EL(Experssion Language)

a.在Servlet中用reuquest.setAttribute(“a”,“b”)传值;再通过请求转发给前端jsp中,这时可以用EL语言:

 ${requestScope.a}

接收相应request域对象的值,而隐式对象还有(不需要new,可直接使用的对象)pageScope,SessionScope,aplicationScope都能获取相应的值。若EL表达式不指定作用域(隐式对象)则系统会自动根据作用域的范围从大到小进行寻找,找到与a匹配的name则输出。还可以获取传递的集合的值

-----------map-------------
   ${requestScope.map['cn'] }<br>
   ${requestScope.map.am }<br>

b. r e q u e s t S c o p e . a 中 的 【 . 】 操 作 符 可 以 等 同 于 【 [ ] 】 , 【 . 】 操 作 符 的 特 点 时 更 方 便 编 写 , 而 【 [ ] 】 更 加 强 大 之 处 在 于 可 以 获 取 变 量 的 值 , 并 且 变 量 名 可 以 含 特 殊 字 符 , 如 : , − . 。 c . 在 {requestScope.a}中的【.】操作符可以等同于【[]】,【.】操作符的特点时更方便编写,而【[]】更加强大之处在于可以获取变量的值,并且变量名可以含特殊字符,如:,-.。 c.在 requestScope.a.[].便[],.c.{ }中可直接进行数值计算和判断,${2+2};运算符还有:+,-,*,/,>,<,=,||,&&.。另外还有emoty运算符:

${empty  requestScope.student.name }<!-- 判断是否是空 -->

若为空或不存在则返回true,否则返回false
d.参数访问。获取表单数据:

${param.name}

获取数组:

${param.values}

JSTL(标准标签库)

1.使用JSTL之前需要下载并导入jar包(JSTLjar和standard.jar),创建jsp页面之后需要引入<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
。其中perfix=“”,是设置的前缀,例如设置的c则使用任何标签都必须是<c: XX />
2.核心标签库分为:通用标签库,条件标签库,迭代标签库
a.通用标签库:
给变量赋值:
<c:set var=“变量名” value=“变量值” scope=“作用域”/>
覆盖值:即已经存在的变量,通过set方法再一次进行赋值,student.sno原本是01改成02

<c:set  target="requestScope.student.sno"  property="sno" value="02" />
显示操作:`<c:out value="a"  defaule="bbb"/>`若变量a不存在,则默认输出bbb。
删除属性:
<c:remove var="变量名" scope=“作用域”>
b.条件标签库
选择(单个):
<c:if  text="条件(boolean)"  ></c:if>
选择(多个):
<c:set var="ss" value="老师" scope="request"></c:set>
     <c:choose>
     	<c:when test="${requestScope.ss=='老大'}">
     		老师。。。
     	</c:when>
     	<c:when test="${requestScope.ss=='学生'}">
     		小学生
     	</c:when>
     <c:otherwise >	其他人。。。 </c:otherwise>
     </c:choose>
 c.迭代标签库(循环,遍历)
在servlet中设置数组,并通过请求转发到jsp页面
 String[] hobby ={"睡觉","看电视","吃"};
request.setAttribute("hobby", hobby);
request.getRequestDispatcher("XXX.jsp").forward(request, response);

	1.遍历数组
<c:forEach var="hobby" items="${requestScope.hobby}" >
	${hobby}    
</c:forEach>
    2.循环
<c:forEach begin="0" end="5" step="+1">
test。。。
</c:forEach>

过滤器

过滤器:拦截,过滤来自客户端的请求,以及服务器返回的响应资源,过滤器的拦截是双向的。也可以有多个。
1,创建过滤器必须要实现接口Filter,同时还要实现方法
destroy() (销毁过滤器),doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2)(过滤拦截。。。),init(FilterConfig arg0)(初始化过滤器)。
2.还需要设置web.xml配置文件

<filter>
  	<filter-name>myservlet</filter-name>
  	<filter-class>LSSFilter.Myfilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>myservlet</filter-name>
  	<url-pattern>/myservlet</url-pattern>
  </filter-mapping>

其中url为指定拦截的servlet,也可设为/*,即拦截所有请求
也可设置`

<dispatcher>REQUEST</dispatcher>

拦截所有HTTP请求(post,get)

  <dispatcher>FORWARD</dispatcher>

拦截所有请求转发请求

<dispatcher>ERROR</dispatcher>

拦截所有请求
3.过滤器的先后由的前后决定。
4.其中doFilter()方法中编写,arg2.doFilter()为放行请求

监听器

监听器:是对某个对象发生的事件或状态改变进行监听和相应处理的对象。监听分为两类,一类是监听某个对象状态变化,另一类是对某个对象的属性改变的监听。主要监听对象:request,session,application
a.对对象监听
1.对request进行监听则需要实现接口:ServletRequestListener
重写方法:equestInitialized()创建监听,requestDestroyed()销毁监听,在地址栏输入jsp也是一种request请求。会启动监听,加载完成监听会自动销毁
2.对session进行监听则需要实现接口:HttpSessionListener
重写方法:sessionCreated()创建监听,sessionDestroyed()销毁监听,客户端对服务端进行请求是会自动生成session,则session会自动监听
3.对application进行监听则需要实现接口:ServletContextListener
重写方法:contextInitialized()创建监听,contextDestroyed()销毁监听
4.当程序使用以上设置的监听是,监听器会自动进行监听,
5.都需要进行web.xml配置

所属类的相对路径

b.对对象属性监听
1.对request属性进行监听则需要实现接口:ServletRequestAttributeListener
2.对session属性进行监听则需要实现接口:HttpSessionAttributeListener
3.对application属性进行监听则需要实现接口:ServletContextAttributeListener
4.这三个属性有相同的方法:XXX.setAttribute("","")
5.各自重写三个方法,分别是对属性的值的增加,删除,修改(代替)进行监听

Session的钝化和活化

访问客户端会自动分配一个session,但是访问的数量过多,系统内存会不足,那么就可以储存到硬盘中,而session数据从内存储存到硬盘的过程称为钝化(序列化),从硬盘取到内存的过程称为活化(反序列化)。

session有四种状态:(以下实现监听不需要配置web.xml)
a.session.setAttribute(“a”,“b”);a绑定(保存)到session中,称为绑定
b.session.getAttribute(“a”,“b”);a从到session中取出来,称为解绑
对ab两种状态进行监听则需要实现接口HttpSessionBindingListener
c.钝化
d.活化(进行监听是直接取值)
对cd进行监听则需要实现接口HttpSessionActivaionListener

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TI RTOS学习笔记是作者在学习TI-RTOS过程中记录学习笔记。根据引用[1],在学习TI-RTOS之前,先要了解什么是RTOS,以及什么是TI-RTOS。RTOS是实时操作系统(Real-Time Operating System)的缩写,它是一种专门用于处理实时任务的操作系统。TI-RTOS是Texas Instruments(TI)公司提供的一种RTOS,适用于TI系列的处理器和微控制器。 根据引用,作者在网上没有找到TI-RTOS的学习视频,但TI公司提供了许多相关的文档资料,因此作者选择通过阅读文档并记录笔记来学习TI-RTOS。 另外,引用中提到了TI RTOS SDK编译框架的介绍。TI RTOS SDK是TI公司提供的用于开发TI-RTOS应用程序的软件开发工具包。编译框架是指用于将源代码转换为可执行文件的编译和构建过程。通过学习和了解TI RTOS SDK的编译框架,可以更好地理解和使用TI-RTOS。 所以,TI RTOS学习笔记是作者记录的关于学习TI-RTOS的笔记,包括对RTOS的理解、TI-RTOS的介绍以及TI RTOS SDK的编译框架的学习和总结。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [TI-RTOS学习记录(一)——初识TI-RTOS](https://blog.csdn.net/qq_43105170/article/details/126447116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [TI RTOS SDK编译框架介绍](https://download.csdn.net/download/embededman/86951678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值