什么是JSP:
Java server pages :Java 服务端页面,也和servlet一样,用于动态web技术。
最大特点:
写JSP跟HTML相像。
区别:
HTML只给用户提供静态的数据
JSP页面可以写入Java代码,为用户提供动态数据;
JSP原理
思路:JSP怎么执行!
代码层面无问题
服务器内部工作
Tomcat中有一个work目录
idea中使用Tomcat的会在idea的Tomcat中产生一个work目录
我电脑相应文件所在地址:C:\Users\LLh.IntelliJIdea2018.2\system\tomcat\Unnamed_javaweb02servlet\work\Catalina\localhost\ROOT\org\apache\jsp
发现页面转变成Java程序
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问servlet!
JSP最终也会转变成一个Java类。
JSP本质就是servlet
在JSP页面中,只要是Java代码,就会原封不动额输出,如果是前端代码,就会转换为:
out.write("<html>\r\n");
这样的格式输出到前端!
jsp基础语法
JSP作为Java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可),Java所有语法都支持!
JSP声明:会被编译到JSP生成Java类中,其他的,就会被生成到_jspService方法中!
在jsp嵌入Java代码即可
注:Java注释,不会在客户端显示,HTML会
JSP指令
配置报错页面代码如下:
//在JSP中添加这个标签 <%@page errorPage="404.jsp" %> <%@ page errorPage="500.jsp" %> //web.xml <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page>
实现模板复用,效果与Django模板继承差不多。
//代码示例 //header.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <h1>我是header</h1> //jsp3.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%--el标签 模板复用--%> <%@include file="common/header.jsp"%> <h1>网页主体</h1> <%@include file="common/footer.jsp"%> <%--jsp标签 模板复用--%> <jsp:include page="common/header.jsp"></jsp:include> <h1>网页主体</h1> <jsp:include page="common/footer.jsp"></jsp:include> </body> </html> //footer.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <h1>我是footer</h1>
九大内置对象
1. pageContext 存东西 常用
2. request 存东西 常用
3. response
4. session 存东西 常用
5. application [servletcontext] 存东西 常用
6. config [servletconfig]
7. out
8. page *
*9. excepetion
request:客户端向服务器发送数据请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的
session:客户端向服务器发送请求,产生数据,用户用完一会还有用,比如:购物车,用户登录验证
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据等。
代码附上:
<%-- pageContextDemo01.jsp --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%--内置对象--%> <% pageContext.setAttribute("name1","耶耶1号");//保存的数据只在一个页面中有效 request.setAttribute("name2","耶耶2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据 session.setAttribute("name3","耶耶3号");//保存数据只在一次会话中有效,从打开浏览器到关闭浏览器 application.setAttribute("name4","耶耶4号");//保存数据只在服务器中有效,从打开服务器到关闭服务器 %> <% //从pageContext取出,我们通过寻找方式来 String name1 = (String) pageContext.findAttribute("name1"); String name2 = (String) pageContext.findAttribute("name2"); String name3 = (String) pageContext.findAttribute("name3"); String name4 = (String) pageContext.findAttribute("name4"); String name5 = (String) pageContext.findAttribute("name5");//不存在 %> <%--使用el表达式输出--%> <h1>取出的值为:</h1> <h2>${name1}</h2> <h2>${name2}</h2> <h2>${name3}</h2> <h2>${name4}</h2> <h2>${name5}</h2> </body> </html> <%-- pageDemo02.jsp --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Titl阿斯顿发生e</title> </head> <body> <% //从pageContext取出,我们通过寻找方式来 String name1 = (String) pageContext.findAttribute("name1"); String name2 = (String) pageContext.findAttribute("name2"); String name3 = (String) pageContext.findAttribute("name3"); String name4 = (String) pageContext.findAttribute("name4"); String name5 = (String) pageContext.findAttribute("name5");//不存在 %> <%--使用el表达式输出--%> <h1>取出的值为:</h1> <h2>${name1}</h2> <h2>${name2}</h2> <h2>${name3}</h2> <h2>${name4}</h2> <h2>${name5}</h2> </body> </html>
jsp标签、jstl标签、el表达式
el表达式: ${}
** 获取数据**
** 执行运算**
** 获取web开发的常用对象**
jstl表达式
jstl标签库的使用就是为了补足HTML标签的不足,它自定义许多标签,可以供我们使用,标签的功能和Java代码一样!
使用步骤:
引入对应的taglib
使用其中的方法
在Tomcat也需要引入jstl的包,否则会报错:jstl解析错误。
核心标签 常用
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>