Javaweb二(JSP详解)
Posted 乘凉者 栽树人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javaweb二(JSP详解)相关的知识,希望对你有一定的参考价值。
8、JSP
8.1、JSP原理
首先了解什么是jsp
-
java服务端页面,和servlet一样,用于动态的web技术
-
特点:
- 写jsp跟html差不多
- HTML只能提供静态的数据
- jsp页面嵌入Java代码,可以提供动态
-
原理:
- 我们执行jsp文件会发现,在我们电脑的地址下,它变成了一个Java程序
- 也就是说浏览器向服务器发送请求,不管访问什么问题,其实都是访问servlet
- jsp本质上就是一个Servlet
-
导入jasper-runtime依赖包
<dependency> <groupId>tomcat</groupId> <artifactId>jasper-runtime</artifactId> <version>5.5.15</version> </dependency>
-
通过HttpJspBase不难发现
public abstract class HttpJspBase extends HttpServlet implements HttpJspPage
它继承了servlet
//初始化 public void jspDestroy() //销毁 protected void _jspDestroy() //JSPService public abstract void _jspService(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException;
8.2、JSP语法
JSP是Java技术的一种应用
依赖准备
<dependencies>
<!-- servlet依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!-- JSP依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<!-- jstl依赖-->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- stand标签-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
JSP表达式
<%--Jsp表达式
作用:用来将程序的输出,输出到客户端
<%=变量或表达式%>
--%>
<%=new java.util.Date()%>
JSP脚本片段
<%
int sum=0;
for (int i = 1; i <=100 ; i++)
sum+=i;
out.print(sum);
%>
<%-- 代码中嵌入HTML元素--%>
<%
for (int i = 0; i <5 ; i++)
%>
<h1>Hello,World <%=i%></h1>
<%
%>
Jsp声明
<%!
static
System.out.println("你好");
private int a=0;
public void kong()
System.out.println("进入方法kong");
%>
JSP声明:会被编译到JSP生成Java的类中!其他的,会被生成到jspService方法中!在jsp中,嵌入java代码即可
<%%>
<%=%>
<%!%>
<%--注释--%>
jsp的注释,不会出现在客户端,Html就会!
8.3、JSP指令
<%@page args....%>
<%@include file=""%>
<%--@includ会将两个页面合二为一--%>
<%--jsp标签
jsp:include拼接页面,本质还是三个--%>
8.4、9大内置对象
- PageContext 存东西
- Request 存东西
- Response
- Session 存东西
- Application 存东西
- config
- out
- page
- exception
PageContext.setAttribute("name","kongkong1");
request.setAttribute("name","kongkong2");
session.setAttribute("name","kongkong3");
application.setAttribute("name","kongkong4");
request:客户端向服务器请求的数据,用户看完就没用,例:新闻
session:客户端向服务器请求的数据,用户用完还有用,例:购物车
application:客户端向服务器请求的数据,这个用户用完,另外的用户还能用,例:聊天记录
8.5、 JSP标签、JSTL标签、EL表达式
JSP标签
<jsp:forward page="/jsp1.jsp">
<jsp:param name="name" value="kongkong"></jsp:param>
<jsp:param name="age" value="21"></jsp:param>
<jsp:forward>
JSTL表达式
JSP标签库的使用就是为了弥补HTML标签的不足,它定义许多标签,可以供我们使用,标签的功能和Java代码一样
格式化标签
SQL标签
XML标签
核心标签(掌握)
<form action="jsp1.jsp" method="get">
<input type="text" name="username" value="$param.username">
<input type="submit" value="登录">
</form>
<c:if test="$param.username=='admin'" var="isAdmin">
<c:out value="登录成功"/>
</c:if>
<c:out value="$isAdmin"/>
头文件还得加上一个
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
注意:要是出现xml无法解析jstl的情况
解决:将jstl-api.jar和standard.jar一起导入tomcat的lib目录下即可
- 使用JSTL标签库步骤
- 引入对应的taglib
- 使用其中的方法
- 在Tomcat也需要引入jstl的包
<c:set var="gradle" value="80"/>
<c:choose>
<c:when test="$gradle>90">
优秀!
</c:when>
<c:when test="$gradle>70">
一般!
</c:when>
<c:when test="$gradle>60">
及格!
</c:when>
<c:when test="$gradle<60">
不及格!
</c:when>
</c:choose>
- For-Each
<%
ArrayList<String> person = new ArrayList<>();
person.add(0,"kong");
person.add(1,"kong4");
person.add(2,"kong3");
person.add(3,"kong2");
person.add(4, "kong1");
request.setAttribute("list",person);
%>
<c:forEach var="person" items="$list">
<c:out value="$person"/><br>
</c:forEach>
<hr>
<c:forEach var="person" items="$list" begin="0" end="4" step="2">
<c:out value="$person"/>
</c:forEach>
以上是关于Javaweb二(JSP详解)的主要内容,如果未能解决你的问题,请参考以下文章