分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

jsp

发布时间:2023-09-06 02:30责任编辑:顾先生关键词:jsjsp
一、jsp概述

???(1)jsp全称是java Server Pages,是一种用于开发动态web的技术。
???(2)jsp实际上是一种servlet技术。
???(3)jsp=html+java
???(4)html/servlet/jsp三者的区别:
???????1)html:静态内容
???????2)servlet:适合编写java逻辑代码,不适合编写网页内容
???????3)jsp:适合编写输出静态内容
???????
二、jsp原理
???
???服务器端: 翻译(生成xxx_jsp.java文件) -> 编译(生成xxx_jsp.class文件) -> 执行
???html代码,服务器不及诶,直接写回客户端
???Java代码直接解析,把结果写回到客户端
???
三、jsp的最佳实践

???Servlet:控制器。重点编写java代码
???????????????作用:(1)获取表单数据;
?????????????????????(2)处理业务逻辑
?????????????????????(3)分发转向
???jsp:代码显示模板,重点在于显示数据
???
四、jsp的基本语法

???(1)JSP模版元素
???????网页的静态内容。如:html标签和文本。
???(2)JSP的脚本
???????小脚本 <% java代码 %>
???????表达式 <%= a+b %> 等价于out.print(a+b);
???????声明 ??<%! %> 表示在类中定义全局成员,和静态块。
???(3)JSP注释
???????JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
???????网页注释:<!-- 网页注释 --> ???特点:不安全(在网页源码中会显示注释的内容),费流量
???
五、3个指令
???
???(1)语法:
???????????<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>
???????或者:
???????????<%@ 指令名称 属性1=“属性值1”%>
???????????<%@ 指令名称 属性2=“属性值2”%>

???(1)page:都有默认值。
???????其中:pageEncoding是告诉服务器使用什么编码进行翻译
????????????contextType告诉浏览器使用什么编码解析
???(2)include:
???????静态包含:把其它资源包含到当前页面中。
???????????<%@ include file="/xxx.jsp %>
???????动态包含:
???????????<jsp:include page="/xxx.jsp"></jsp:include>
???????两者的区别:翻译的时间段不同
???????????前者:在翻译时就把两个文件合并
???????????后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
???????????注:能用静的就不用动的。
   (3)taglib:
      作用:在JSP页面中导入JSTL标签库,替换jsp中的java代码片段。

六、jsp的6个动作

???<jsp:include > 动态包含
???<jsp:forward> 请求转发
???<jsp:param> 设置请求参数
???<jsp:useBean> 创建一个对象
???<jsp:setProperty> 给指定的对象属性赋值
???<jsp:getProperty> 取出指定对象的属性值

七、jsp的9个内置对象

???request:域对象
???response
???session:域对象
???application:域对象
???exception
???page:java.lang.Object:当前对象this
???config
???out
???pageContext:域对象
???????可以操作其他对象方法
???????findAttribute(String name); 自动从page request session application依次查找,找到了就取值,结束查找
???
八、EL表达式

???(1) EL表达式:expression language 表达式语言用来简化jsp中java代码开发。EL不是一种开发语言,是jsp中获取数据的一种规范.
???(2)EL表达式只能获取存在4个作用域中的数据
??????${u} <===> pageContext.findAttribute("u");
??????${u.name} <==>u.getName()方法
???????????.运算符相当于调了getter方法,(.属性名)。
???(3)EL获取对于null这样的数据,在页面中表现为空字符串"";
???(4)empty
??????
???????也可以使用三元运算符
      
 ???<%  

     <%--判断null,是的话返回true(空字符串和没有元素的集合都是null)--%> ???????String str1 = null; ???????request.setAttribute("str1", str1); ???????????????String str2 = ""; ???????request.setAttribute("str2",str2); ???????????????String str3 = "abc"; ???????request.setAttribute("str3", str3); ???????????????????????List list1 = new ArrayList(); ???????request.setAttribute("list1", list1); ???????????????List list2 = new ArrayList(); ???????list2.add("asdf"); ???????request.setAttribute("list2", list2); ???????????????int sex = 0; ???????request.setAttribute("sex", sex); ????%> ?????????${ empty str1 } //true ?????${ empty str2 } ?//true ????${ empty str3 } ?// false ?????${ empty list1 } // true ?????${ empty list2 } // false ????<%--三元运算符--%> ????<input type="radio" name="sex" value="male" ${sex==0 ? "checked=‘checked‘":"" }/>男<br/> ????<input type="radio" name="sex" value="female" ${sex==1 ? "checked=‘checked‘":"" }/>女<br/> ????


九、JSTL

??(1)JSTL(JavaServerPages Standard Tag Library)JSP标准标签库,使用JSTL实现JSP页面中逻辑处理。如判断、循环等。
??(2)使用JSTL需在页面中添加taglib指令:
???????<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  
 ???<%--通用标签: set、 out、 remove--%> ???<c:set var="num1" value="${2+3}" scope="page"></c:set> ???<c:out value="${num1}"></c:out> ???<c:remove var="num1"></c:remove> ???<%--条件标签:if --%> ???<c:set var="num2" value="3"></c:set> ???<c:if test="${7>num2}"></c:if> ???<%--条件标签:choose --%>-- ???<c:set var="num3" value="3"></c:set> ???<c:choose> ???????<c:when test="${num3==1}">1111</c:when> ???????<c:when test="${num3==2}">2222</c:when> ???????<c:when test="${num3==3}">3333</c:when> ???????<c:otherwise>others</c:otherwise> ???</c:choose>
<% ???????<%--迭代标签:foreach--%> ???????List list = new ArrayList(); ???????list.add("tom"); ???????list.add("bob"); ???????list.add("jerry"); ???????list.add("marry"); ???????list.add("sundy"); ???????pageContext.setAttribute("list", list);<%--只有在本页使用pageContext有效--%> ???%> ???<table border="1"> ???????<tr> ???????????<th>姓名</th> ???????????<th>索引</th> ???????????<th>计数</th> ???????????<th>第一个</th> ???????????<th>最后一个</th> ???????</tr> ???????<c:forEach items="${list}" var="list" varStatus="vs"> ???????????<tr> ???????????????<td>${list}</td> ???????????????<td>${vs.index}</td> <%--索引--%> ???????????????<td>${vs.count}</td> <%--计数--%> ???????????????<td>${vs.first}</td> <%--第一个(Boolean)--%> ???????????????<td>${vs.last}</td>  <%--最后一个(Boolean)--%> ???????????</tr> ???????</c:forEach> ???</table>
 ???
???????

jsp

原文地址:https://www.cnblogs.com/q-1993/p/10296188.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved