javaweb之jsp

jsp

什么是jsp

在很多动态网页中,绝大部分内容都是固定不变了,只有局部内容需要动态产生和改变,为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了jsp。

jsp的本质就是一个Servlet,运行时会自动编译为java文件

jsp脚本

声明脚本

声明脚本,用于声明全局变量/方法

声明的全局变量/方法,会被定义在当前将被生成的Servlet类的全局变量里,方法之外类之内 jsp <%! String name; %>

脚本段

在脚本段中书写java代码,且代码生成在service方法里 jsp <% //在这里写java代码,这里的java代码会自动生成在Servlet的service方法里 %>

表达式脚本

把表达式进行运算,并把结果打印到页面上 jsp <%= 21+32 %>

jsp指令

jsp <%@ 指令名称 %>

page指令

pageEncoding 编码方式

language 目前仅支持java

import 导入jar包

errorPage 页面报错后,指定报错页面

isErrorPage 是否使用错误页面

```jsp <%@ language="java" %>

```

### include 把指定文件中的信息包含到当前页面中

jsp <%@include file="jsp文件路径" %>

tablib

用于引入,其他标签库 jsp <%@taglib prefix="前缀" url="标签库" %>

jsp内置标签

jsp:useBean

useBean 用于代替页面里使用对象 jsp <jsp:useBean id="" class="类路径" scope="request"></jsp:useBean>

jsp:setProperty

给对象属性赋值

jsp <jsp:setProperty name="对象名" property="属性名" value="属性值"></jsp:setProperty>

getProperty

获取对象属性 jsp <jsp:getPeroperty name="对象名" property="属性名" value="属性值"></jsp:getPeroperty>

forWard

请求转发跳转 jsp <jsp:forward page="/index.jsp" ></jsp:forward>

element(不常用)

用于在jsp写html标签 ```jsp

```

attribute (不常用)

设置元素的属性值

jsp <jsp:element name="a"> <jsp:attribute name="href">http://www.baidu.com</jsp:attribute> </jsp:element>

范围对象

范围对象一般是是用于一定范围内的数据共享

HttpSerletRequest 请求

HttpSession 会话对象

ServletContext 上下文对象

Session

会话对象,一次会话,多次请求,通过session在请求之间共享数据。

java public class SessionDemo extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res){ dopost(req,res); } public void dopost(HttpServletRequest req,HttpServletResponse res){ HttpSession session=req.getSession(); session.setAttribute("属性名","属性值"); session.getAttribute("属性名"); } }

ServletContext

上下文对象,只要程序运行就在程序中

```java public class contextDemo extends HttpServlets{ public void doGet(HttpServletRequest req,HttpServletResponse res){ dopost(req,res); } public void dopost(HttpServletRequest req,HttpServletResponse res){ //直接获取 getServletCoontext() //通过request获取 req.getServletContext() //通过session获取 req.getSession().getServletContext()

//属性值设置和获取

 context.setAttribute("属性名","属性值");
 context-getAttrbibute("属性名");
}

}

```

jsp九大内置对象

request 请求对象

response 响应对象

session 会话对象

pageContext 页面上下文对象,进行当前页面数据共享

application 这个application就是ServletContext

config 这个是ServletConfig Servlet的配置对象

out 输出流 == response.getWriter().writer(String)

page 当前类对象

exception 异常对象(只有在page指令isErrorPage为true时才可以使用)

EL表达式

表达式语言

语法:${} 作用就是代表输出标识符所代表的值

使用${}来进行输出值

el表达式里还支持使用运算符:比如关系运算符,三目运算符 jsp <!-- 替换表达式 --> ${21+32} <!-- 获取共享数据 --> ${requestScope.属性名} <!-- 获取集合中的数据(list表达式获取集合中的数据必须将集合存储在范围对象内) --> <% List list=new ArrayList(); list.add(1);list.add(2);request.setAttribute("list",list);%> ${list[1]}

如果el表达式不支持的话可以尝试加入page指令isElignored=false

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

EL表达式内置对象

requestScope 请求对象

sessionScope 会话对象

applicationScope 上下文对象

pageScope 当前页面上下文对象

param 参数对象

JSTL

jstl是jsp的标签库

jstl一般是与el表达式配合使用,所以需要设置page 指令 isELIgnored="false" maven配置

使用jstl需要以这样的方式导包

xml <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jstl-impl</artifactId> <version>1.2</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> </exclusion> <exclusion> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> </exclusion> </exclusions> </dependency>

jstl核心标签

< c:out >

输出标签,相当与<%= %>

属性 value(必须) 输出的值

default(可有) 默认输出

  escapeXml(可有) 是否转换特殊字符(值为true/false)

jsp <c:out value="哈哈哈"></c:out>

###

用于定义变量或者属性的名称

属性 var 属性/变量名称

value 值

 scope(可选,默认为page) 范围变量

```jsp

```

用于条件判断 属性 test="判断语句"

jsp <c:if test="${21>20}">成年了</c:if>

选择标签,相当于java中的switch语句,通常配合 (相当于switch的case)和 (相当于switch的default)使用 jsp <c:choose> <c:when test="${a < 20}">大于</c:when> <c:when test="${a>18}">小于</c:when> <c:otherwise>没有这个选项</c:otherwise> </c:choose>

遍历标签

属性: items 要被循环的信息可以是数组,java集合等

var 当前被遍历对象的别名

begin 起始下标

end 结束洗标

step 每次迭代的步长

jsp <c:forEach begin="0" end="10" step="2" var="num" >${num}</c:forEach>

###

截取字符串

属性 items 目标字符串

dalims 以x切割

var 切割之后字符串的别名 jsp <c:forTokens items="112哈哈哈2哈哈哈" delims="2" var="str">${str}</c:forTokens>

###

删除属性/变量

属性

   varname 要删除的属性名/变量名

   scope 要删除的作用域,默认是page

```jsp

```

引入标签,用于导入动态或者静态文件

属性: 
  url="文件路径"

  charEncoding="utf-8" 引入文件的字符编码

   context="names" 使用相对路径访问context资源时,context用来指定这个资源的名称

   scope 范围变量

   var 存储所引入文本的变量

jsp <c:import var="data" url="http://www.baidu.com" /> <c:out value="${data}" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值