1. 为什么需要JSP?

通过Servlet输出html代码,会十分的复杂和别扭😂。如果能够直接使用html代码,然后在html中写java代码,就很方便了。

JSP就可以实现。

2. 执行过程

为什么JSP可以在html中运行java代码?这是因为JSP被转译成了Servlet。

3. 页面元素

JSP由这些页面元素组成:

  • 静态内容:html css javascript等内容
  • 指令:以<%@开始 %>结尾
  • 表达式: <%=%> 输出一段html
  • Scriptlet: 在<%%>之间,可以写任何Java代码
  • 声明:<%!字段或方法%>
  • 动作:
  • 注释:<%— —%>

4. 包含

每个网页的最下方都有版权声明等信息。如果不使用包含,那么每个网页都需要单独添加版权声明,如果版权声明要修改,则需要很大的工作量。

可以准备一个footer.jsp,然后在其他页面包含footer.jsp即可(类似于引用变量或者是方法重用的思想)。修改的时候,只需要修改footer.jsp所有的页面就都修改了,维护成本降低了很多。

  1. 指令include <%@include file=”footer.jsp”%>
  2. 动作include

区别:使用前者将把footer.jsp和引用它的jsp文件转译成一个java文件;而后者会被转译成两个java文件,footer_jsp.java.

如果使用动作include,传参也需要使用动作参数,在footer.jsp中使用request.getParameter(“year”)

5. 跳转

  • 服务端跳转(转发):request.getRequestDispatcher().forward(request, response); 或使用动作
  • 客户端跳转(重定向):response.sendRedirect();

作用:例如登录一个网站的账户时,会提示是否保持免登录状态,勾选之后,将在一段时间进入不需要账号密码。这些就是靠Cookie实现的。

Cookie是一种浏览器和服务器交互数据的方式。它是由服务器端创建的,但是不会保存在服务器,在创建好之后,发送给浏览器,浏览器保存在本地。下一次访问网站的时候,浏览器把Cookie发送给服务器。

setCookie.jsp

1
2
3
4
5
6
7
8
9
10
11
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="javax.servlet.http.Cookie">
<%
// 创建Cookie对象,名字是name,值是Gareen
Cookie c = new Cookie("name", "Gareen");
// 设置Cookie在本地保存的时间(这里表示一天)
c.setMaxAge(24*60*60);
// Path表示服务器访问Path路径将会提交Cookie给服务器(这里表示所有应用都会提交)
c.setPath("/");
// 把Cookie保存在浏览器端
response.addCookie(c);
%>

7. Session

Session(会话)就像一个个盒子,而Cookie就像一把把钥匙,不同的Cookie对应着不同的Session。

Session指的是从用户打开浏览器访问一个网站开始,无论在这个网站中访问了多少页面,点击了多少链接,都属于同一个会话。直到该用户关闭浏览器为止。

session.setAttribute(“key”, “value”) Session对象保存数据的方式,有点像Map的键值对。

session.getAttribute(“key”) 根据键取出对应的值

如果浏览器把cookie功能关闭,那么每次访问,都会生成一个新的Session对象。

8. 总结

由于只是简单的了解一下JSP,具体的练习还没有自己去做,其表达式语言等用到了再进行学习。