JSP
什么是JSP
Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术!
最大的特点:
- 写jsp就像再在写HTML
区别:
- html只给用户提供静态的数据
- jsp页面中可以嵌入Java代码,为用户提供动态数据
jsp原理
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet
jsp最终也会被转换成为一个java类
jsp本质上就是一个Servlet类
在jsp页面中
只要是Java代码就会原封不动的输出
如果是html代码,就会被转换为:
这样的格式,输出到前端
out.write("<html>\r\n");
jsp基础语法
任何语言都有自己的语法,Java中有,jsp作为Java技术的一种应用,它拥有一些自己扩充的语法(了解即可),Java所有语法都支持
jsp表达式
<%--jsp表达式 作用:用来将程序输出,输出到客户端 <%= 变量或者表达式%> --%> <%= new java.util.Date()%>
jsp脚本片段
<%--jsp脚本片段--%> <% int sum = 0; for (int i = 1; i <= 100 ; i++) { sum+=i; } out.println("<h1>sum="+sum+"</h1>"); %>
脚本片段的再实现
<% int x = 10; out.println(x); %> <p>这是一个jsp文档</p> <% int y = 2; out.println(y); %> <hr> <%--在代码中嵌入html元素--%> <% for (int i = 0; i < 5 ; i++) { %> <h1>hello,world <%=i%></h1> <% } %>
jsp声明
<%! static{ System.out.println("Loading Servlet!"); } private int globaVar = 0; public void he(){ System.out.println("进入了方法he!"); } %>
jsp声明:会被编译到jsp生成Java的类中,其他的,就会被生成到_javaService中!
在jsp中,嵌入java代码即可
<%%> <%=%> <%!%> <%jsp注释%>
jsp注释,不会在客户端显示,html会
jsp指令
<%@page args...%> <%@include file=""%> <%--@include会将两个页面合二为一--%> <%@include file="common/header.jsp"%> <h1>网页主题</h1> <%@include file="common/footer.jsp"%> <hr> <%--jsp标签 jsp:include:拼接页面,本质还是3个 --%> <jsp:include page="/common/header.jsp"/> <h1>网页主题</h1> <jsp:include page="/common/footer.jsp"/>
九大内置对象
- PageConetext
- Request
- Response
- Session
- Application
- config
- out
- page 不用了解
- exception
pageContext.setAttribute("name1","饼干1号");//保存的数据只在一个页面中有效 request.setAttribute("name2","饼干2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据 session.setAttribute("name3","饼干3号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器 application.setAttribute("name4","饼干4号");//保存的数据只在服务器中有效,从打开服务器到关闭浏览器
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的
session:客户端向服务器发送请求,产生的数据,用户看完一会还有用,比如:购物车
application:客户端向服务器发送请求,产生的数据,一个客户用完了,其他的客户还可能使用,比如:聊天数据
jsp标签,jstl标签,EL表达式
<!--jsp依赖--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> </dependency> <!-- jstl的依赖 --> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency>
EL表达式:${ }
- 获取数据
- 执行运算
- 获取web开发的常用对象
<%--jsp:include--%> <%-- http://loaclhost:8080/jsptag.jsp?name=binggan&age = 5 --%> <jsp:forward page="/jsptag2.jsp"> <jsp:param name="name" value="binggan"></jsp:param> <jsp:param name="age" value="5"></jsp:param> </jsp:forward>
JSTL标签库的使用就是为了弥补HTML标签的不足,它自定义许多标签,可以供我们使用,标签的功能和Java代码一样
核心标签
格式化标签
SQL标签
XML标签
JSTL标签库使用步骤
- 引入对应的taglib
- 使用其中的方法
- 在Tomcat也需要引入JSTL的包,否则会报错:JSTL解析错误
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%--定义一个变量score,值为85--%> <c:set var="score" value="85"/> <c:choose> <c:when test="${score>=90}"> 你的成绩为优秀 </c:when> <c:when test="${score>=80}"> 你的成绩为一般 </c:when> <c:when test="${score>=70}"> 你的成绩为及格 </c:when> <c:when test="${score<=60}"> 你的成绩为不及格 </c:when> </c:choose> </body> </html>
判断如果提交的用户名是管理员,则登陆成功 <% if(request.getParameter("username").equals("admin")){ out.print("登录成功"); } %>