JSP就是可以实现在html中写Java代码

例:

hello.jsp

<%@page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>      <!-- 引入相关的Java包--> 你好
<%                                <!--这里面可写Java代码 -->
String list = "listssssss";
session.setAttribute("list", list);          <!--设置session -->
%>
<br>
<a href="bye.jsp">跳转到bye页面</a>            <!-- 纯html代码-->

bye.jsp

<%@page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%> 拜拜!
<br>
<%=new Date().toLocaleString()%>          <!--输出时间,Java代码-->
<br>
<%
String list = (String)session.getAttribute("list");    <!--获得session-->
%> 
<%= list%>                             <!--输出session内容-->

执行过程

例如新建一个hello.jsp文件:

  • 把 hello.jsp转译为hello_jsp.java
  • hello_jsp.java是一个servlet
  • 把hello_jsp.java 编译为hello_jsp.class
  • 执行hello_jsp,生成html
  • 通过http协议把html 响应返回给浏览器

页面元素

1. 静态内容
就是html,css,javascript等内容
2. 指令
以<%@开始 %> 结尾,比如<%@page import="java.util.*"%>
3. 表达式 <%=%>
用于输出一段html
4. Scriptlet
在<%%> 之间,可以写任何java 代码
5. 声明
在<%!%> 之间可以声明字段或者方法。但是不建议这么做。
6. 动作
指令include   <%@include file="footer.jsp" %>。footer.jsp的内容会被插入到 hello.jsp 转译 成的hello_jsp.java中,最后只会生成一个hello_jsp.java文件

动作include   <jsp:include page="footer.jsp" />   footer.jsp的内容不会被插入到 hello.jsp 转译 成的hello_jsp.java中,还会有一个footer_jsp.java独立存在。 hello_jsp.java 会在服务端访问footer_jsp.java,然后把返回的结果,嵌入到响应中。

7. 注释 <%-- -- %>
不同于 html的注释 <!-- --> 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了

跳转

服务器端跳转:

request.getRequestDispatcher("hello.jsp").forward(request, response);

或使用动作

<jsp:forward page="hello.jsp"/>

客户端跳转:

response.sendRedirect("hello.jsp");

作用域

pageContext表示当前页面作用域

requestContext 表示一次请求。随着本次请求结束,其中的数据也就被回收.

    如果发生了服务端跳转,从setContext.jsp跳转到getContext.jsp,这其实,还是一次请求。 所以在getContext.jsp中,可以取到在requestContext中设置的值

    客户端跳转,浏览器会发生一次新的访问,新的访问会产生一个新的request对象。所以页面间客户端跳转的情况下,是无法通过request传递数据的。

sessionContext 指的是会话,从一个用户打开网站的那一刻起,无论访问了多少网页,链接都属于同一个会话,直到浏览器关闭。

applicationContext 指的是全局,所有用户共享同一个数据

最新文章

  1. ASP.NET 访问共享文件夹
  2. 用Python建立最简单的web服务器
  3. hibernate(五)核心开发接口与对象的三种状态
  4. MySql的日常管理
  5. Solr单机部署和集群部署
  6. JAVA 反序列化攻击
  7. java-base64
  8. 利用PCA来简化数据
  9. 【LeetCode练习题】Linked List Cycle II
  10. Flex中如何通过设置GridLines对象的horizontalAlternateFill样式交错显示LineSeries图表背景颜色的例子
  11. 滚动视图UIScrollView
  12. Memory
  13. centos6下从源码安装setuptools和pip
  14. FusionWidgets Bulb图
  15. php一句话反弹bash shell
  16. 网络编程-Python高级语法-闭包
  17. 2018-2019-2 20165303《网络攻防技术》Exp5 MSF基础应用
  18. vChart
  19. JavaScript中判断整字类型最简洁的实现方法
  20. Myeclispe 代码自动补全

热门文章

  1. 警惕char类型直接相加
  2. redis 开启AOF
  3. JVM 第六篇:极致优化 IDEA 启动速度
  4. 分布式系统中的CAP、ACID、BASE概念
  5. 基于python实现单链表代码
  6. Python常用模块之random和time
  7. Html+Ajax+Webservice 实现文件跨域上传
  8. JS实现鼠标移入水波效果
  9. VirtualBox 安装Ubuntu(16.04/18.04)时显示不全的解决方法
  10. D. Palindromic characteristics 解析(DP)