JSP学习笔记(一)

JSP学习笔记(一)

通过Servlet进行整个网站的开发是可以的。 不过在Servlet中输出html代码,特别是稍微复杂一点的html代码,就会给人一种很酸爽的感觉。
如果能够直接使用Html代码,然后在html中写java代码,就好了,JSP可以干这个事情。

先弄个小demo

在web目录下下新建一个文件hello.jsp:

<%@page contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%> 
你好 JSP 
<br> 
<%=new Date().toLocaleString()%>

显示如图:
在这里插入图片描述

代码解释
<%@page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" import="java.util.*"%>是JSP的<%@page指令
<%=new Date().toLocaleString()%>是输出当前时间,相当于在Servlet中使用response.getWriter()进行输出:response.getWriter().println(new Date().toLocaleString());

因为JSP被转译成了Servlet,所以JSP可以在html中运行java代码

执行过程
1. 把 hello.jsp转译为hello_jsp.java
2. hello_jsp.java 位于
d:\tomcat\work\Catalina\localhost\_\org\apache\jsp
3. hello_jsp.java是一个servlet
4. 把hello_jsp.java 编译为hello_jsp.class
5. 执行hello_jsp,生成html
6. 通过http协议把html 响应返回给浏览器

在这里插入图片描述

- 的7种页面元素

jsp由这些页面元素组成:

1. 静态内容
就是html,css,javascript等内容
2. 指令
以<%@开始 %> 结尾,比如<%@page import="java.util.*"%>
3. 表达式 <%=%>
用于输出一段html
4. Scriptlet
在<%%> 之间,可以写任何java 代码
5. 声明
在<%!%> 之间可以声明字段或者方法。但是不建议这么做。
6. 动作
<jsp:include page="Filename" > 在jsp页面中包含另一个页面。在包含的章节有详细的讲解
7. 注释 <%-- -- %>
不同于 html的注释 <!-- --> 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了

在这里插入图片描述

<%="hello jsp"%> 就相当于<%out.println("hello jsp");%>
out是jsp的隐式对象,可以直接使用。一共有9种隐式对象
- INCLUDE包含其他页面的两种方式,以及其区别

include有两种方式指令include和动作include

指令include:<%@include file="footer.jsp" %>
动作include:<jsp:include page="footer.jsp" />

这两种方式可以将footer.jsp这个文件加入到此页面中
指令include和动作include的区别:

通过之前的学习知道,JSP最后会被转译成Servlet
如果是指令include :footer.jsp的内容会被插入到 hello.jsp 转译 成的hello_jsp.java中,最后只会生成一个hello_jsp.java文件
如果是动作include:footer.jsp的内容不会被插入到 hello.jsp 转译 成的hello_jsp.java中,还会有一个footer_jsp.java独立存在。 hello_jsp.java 会在服务端访问footer_jsp.java,然后把返回的结果,嵌入到响应中。
服务端跳转和客户端跳转

和Servlet的跳转一样,JSP的跳转也分服务端跳转和客户端跳转。

客户端跳转:jsp的客户端跳转和Servlet中是一样的。response.sendRedirect("hello.jsp");
服务端跳转:与Servlet的服务端跳转一样,也可以使用:request.getRequestDispatcher("hello.jsp").forward(request, response);或者使用动作,简化代码:<jsp:forward page="hello.jsp"/>
COOKIE 的创建和访问

cookie 在平时生活中的运用:有的网站,登陆的时候,会出现一个选项,问你是否要一周内或者一个月内保持登陆状态。
如果你选了,那么一周之内,都不需要再输入账号密码。
这个功能,就是靠cookie来实现的
什么是cookie:
Cookie是一种浏览器和服务器交互数据的方式。
Cookie是由服务器端创建,但是不会保存在服务器。
创建好之后,发送给浏览器。浏览器保存在用户本地。
下一次访问网站的时候,就会把该Cookie发送给服务器。

在web目录下创建一个文件 setCookie.jsp
Cookie c = new Cookie("name", "Gareen");
创建了一个cookie,名字是"name" 值是"Gareen"
c.setMaxAge(24 * 60 * 60);
表示这个cookie可以保留一天,如果是0,表示浏览器一关闭就销毁
c.setPath("/");
Path表示访问服务器的所有应用都会提交这个cookie到服务端,如果其值是 /a, 那么就表示仅仅访问 /a 路径的时候才会提交 cookie
response.addCookie(c);
通过response把这个cookie保存在浏览器端

在web目录下创建文件getCookie.jsp

Cookie[] cookies  = request.getCookies();
表示获取所有浏览器传递过来的cookie
if (null != cookies )
如果浏览器端没有任何cookie,得到的Cookie数组是null
for (int d = 0; d <= cookies.length - 1; d++) {
   out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>");
}
遍历所有的cookie
可以看到name:Gareen,这个在setCookie.jsp中设置的cookie

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值