【笔记整理】—— 2.8 JSP总结 | 日期转化


【前言】
Servlet有以下两个缺陷:

  • Servlet中编写嗯的HTML标签都必须在Java字符串中,使发送Http响应十分繁琐。
  • 所有的文本和HTML都必须硬编码,只要修改,就需要重新编译。

JSP解决了这两个问题:

  • JSP不是代替Servlet,而是对Servlet的补充。
  • JSP页面是在JSP容器中运行的,Servlet容器一般也是JSP容器。

JSP实现过程

来自百度:JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,JSP 使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑,从而网页逻辑与网页设计的显示分离。支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

一个JSP页面可以被分为以下几部份:静态数据、JSP指令、JSP脚本元素和变量、JSP动作、用户自定义标签。

  1. 第一次请求JSP页面时,每个JSP页面会被自动转换为一个JSP页面的实现类。一般是实现了javax.servlet.jsp.JspPage接口或其子接口javax.servlet.jsp.HttpjspPage的Java类。因为JspPagejavax.servlet.Servlet的子接口,所以,每个JSP页面也是一个Servlet

  2. 如果转换成功,(转换成 java 代码)容器将会加载和执行它的字节码文件,它将有与servlet一样的生命周期。

  3. 在同一个JSP页面的后继请求中,Servlet/JSP容器会查看这个JSP页面是否被修改过,如果修改过,就会被重新转换和编译,如果没有,则会执行执行。因此,第一次调用JSP页面的时间总是会比后继调用耗费的时间久。

日期转化
//yyyy/mm/dd hh:mm:ss
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd hh:mm:ss");

//Date 类型 ——> 常用类型
String fdate = sdf.format(date);  
System.out.println(date);
System.out.println(fdate);

//常用类型 ——> Date 类型 
Date date2 = sdf.parse(fdate);
System.out.println(date2);

在JSP中加入Java代码

<%@page import="java.util.Date" %>
<%@page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello word</title>
</head>
<body>
       <%
             SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd");
             String s = df.format(new Date());
             out.print(s);
       %>
</body>
</html>

【注意】

  1. java代码要用<% 和 %>包起来,并且可以放在JSP页面中的任何位置。
  2. 为了导入一个JSP页面中要用到的Java类型,可以使用page指令的import属性 <%@page import="java.util.Date" %>。如果没有导入则需要使用类的全名。
JSP注释

(1)JSP注释:以<%-- 开头,以 --%>结尾。JSP注释的内容不会被发送到浏览器,也不能进行嵌套。
(2)HTML注释:以< !-- 开头,以–>结尾。这部分注释不被容器处理,而是被浏览器处理

JSP中的隐式对象:

隐式对象就是容器默认提供的对象,在jsp页面中,不需要实例化就可以随意使用的对象。
在Servlet中,我们可以使用容器中提供的HttpRequest、HttpResponse以及获取HttpSession等对象。在JSP中,我们可以通过下表中的隐式对象来使用相关对象。
在这里插入图片描述
pageContext(当前页面) < requestContext(在当前请求) < session(当前session中) < application(sevletContext)

  1. 从request对象中获取userName参数,直接用 request. 就行
<%
    String username = request.getParameter("userName");
%>
  1. pageContext对象代表了一个页面的全局环境。提供了一个页面有用的上下文信息。通过它,可以访问Servlet相关的各种对象。例如:

    getRequest();
    getResponse();
    getServletContext();
    getServletConfig();
    getSession();
    

    pageContext还提供了两个重要的存取属性的方法:setAttribute()getAttribute(); 属性可以保存在以上 4 种范围中:

    void setAttribute(String name, Object value, int scope);
    pageContext.setAttribute("username", "zs", PageContext.APPLICATION_SCOPE);

    如果调用: pageContext.setAttribute("username", "zs"); 则默认的存储范围是page。

  2. 隐式对象out是javax.servlet.jsp.JspWriter的一个实例。该方法类似HttpServletResponse中调用调用getWriter()获得的PrintWriter对象,我们 可以使用它的print方法将信息发送给浏览器。
    例如:
    out.println("welcome");
    out.println(session.getId());

  3. 默认情况下,JSP将页面内容设置为text/html。如果想发送不同类型的内容,就必须调用response.setContentType()设置内容类型。
    例如:
    response.setContentType("text/json");

指令
1 page指令

利用page指令可以就当前 JSP 页面的某些方面对 JSP 转换器提出指示。语法格式如下:

<%@ page    attr="value" attr2="value2" ... %>

attr代表属性。page指令的属性列表如下:
import :指定导入的一种或多种Java类型。例如:import=“java.util.List”。例如通配符 还可以导入整个包。import=“java.util.*”,导入多种类型时,类型之间用逗号隔开。例如:import="java.util.List,java.io.PrintWriter"。下面包中的所有类型都是隐式导入的:

java.lang;
java.servlet;
javax.servlet.jsp;

session:值为true时,表示页面参与session管理,否则不参与;默认值为true。如果之前还没有HttpSession实例,那么调用JSP页面将会创建一个。

pageEncoding:指定页面的编码方式。默认为ISO-8859-1。

isErrorPage:将一个jsp页面设置成一个错误处理页面。

errorPage:用来指明错误处理页面。

2 include指令

可以将另一个页面的内容放到当前的JSP页面中。

<%@ include file="url" %>

其中,url若是以“/”开头,则表示以服务器根节点开始的绝对路径,如果不以“/”开头,则表示相对于当前页面的相对路径。

脚本元素

脚本元素将java代码和jsp混合在一起。脚本元素包括:scriptlet、声明、表达式。

1 Scriptlet

Scriptlet 就是一个java的代码块,可以在里面写入java代码,以<%开始,以%>结束。

<%
    for(int i = 0; i <10; i++) {
     }
%>

注意:在一个Scriptlet中声明的变量,在其他的Scriptlet中是可见的。

2 声明

声明用来声明在JSP中使用的变量和方法。声明需要用<%!%>包起来。例如:

<%!
        public void printTT(){
             System.out.print("TTTTTT");
        }
%>

声明可以放在JSP中的任意位置,并且一个JSP页面可以有任意个数的声明。
我们还可以在jsp的声明中覆盖jsp的生命方法:jspInitjspDestory

<%!
public void jspInit(){}
public void jspDestory(){}
%>
3 表达式

表示式的运算结果会被隐式的填入到 outprint 方法中。表达式以<%=开始,以%>结束。

Today is <%=java.util.Calendar.getInstance().getTime() %>

注意:表达式的后面不需要分号。

动作
1 forward

forward用来跳转到不同的资源。

<jsp:forward page="/jsp/id.jsp">
    <jsp:param name="text" value="请登录" />
<jsp:forward> 
2 错误处理

可以使用page指令的isErrorPage指令,将一个jsp页面设置成一个错误处理页面。

<%@page isErrorPage="true" %>
错误信息:
<%
    out.println(exception.getMessage());
%>

<%@page errorPage="err.jsp" %>
<%
    Integer a = null;
    a.toString();
%>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值