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所有的页面就都修改了,维护成本降低了很多。
- 指令include <%@include file=”footer.jsp”%>
- 动作include
区别:使用前者将把footer.jsp和引用它的jsp文件转译成一个java文件;而后者会被转译成两个java文件,footer_jsp.java.
如果使用动作include,传参也需要使用动作参数
5. 跳转
- 服务端跳转(转发):request.getRequestDispatcher().forward(request, response); 或使用动作
- 客户端跳转(重定向):response.sendRedirect();
6. Cookie
作用:例如登录一个网站的账户时,会提示是否保持免登录状态,勾选之后,将在一段时间进入不需要账号密码。这些就是靠Cookie实现的。
Cookie是一种浏览器和服务器交互数据的方式。它是由服务器端创建的,但是不会保存在服务器,在创建好之后,发送给浏览器,浏览器保存在本地。下一次访问网站的时候,浏览器把Cookie发送给服务器。
setCookie.jsp1
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,具体的练习还没有自己去做,其表达式语言等用到了再进行学习。