JavaWeb 后端 <五> 之 JSP 学习笔记

一、JSP简介

1、也是SUN公司推出的开发动态web资源的技术,属于JavaEE技术之一。由于原理上是Servlet, 所以JSP/Servlet在一起。

二、HTML、Servlet和JSP

1、HTML:静态页面,不能包含java代码,只能有HTML有关的标记

2、Servlet:写java代码,做页面的输出,不是很方便(开发效率很低)

3、JSP:HTML+java

三、输出当前的时间

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>第一个JSP,输出当前的时间</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    现在是:
    <%
        Date now = new Date();
        //out.write(now.toLocaleString());
    %>
    <%=now%>
  </body>
</html>

四、JSP的原理及生命周期

1、JSP就是Servlet,学习好JSP的关键(语法),时刻想到他对应的Servlet。

2、时常翻阅JSP对应的Servlet源码

Work 中查找

五、JSP的语法

5.1模板元素

指JSP中的那些HTML。开发时先编写模板元素,因为他们决定页面的外观。

5.2Java程序片段

语法:<%java程序%>

出现在JSP对应Servlet的service方法中。

<%声明的变量:局部%>

5.3Java表达式

语法:<%=表达式%>

小练习:作业

Java程序片段和表达式练习

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <title>第一个JSP,输出当前的时间</title>
 7
 8     <meta http-equiv="pragma" content="no-cache">
 9     <meta http-equiv="cache-control" content="no-cache">
10     <meta http-equiv="expires" content="0">
11     <!--
12     <link rel="stylesheet" type="text/css" href="styles.css">
13     -->
14
15   </head>
16
17   <body>
18     现在是:
19     <%
20         Date now = new Date();
21         //out.write(now.toLocaleString());
22     %>
23     <%=now%>
24   </body>
25 </html>

5.4JSP声明

语法:<%!

%>

作用:定义JSP对应Serlvet的成员(变量和方法、静态方法)

<%@page import="java.lang.reflect.Method"%>
<%@ page language="java" import="java.util.*" session="true" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JSP声明</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    <%!
    int i=100;//不建议

    public void m1(){
        //out.write("hello");//不可以,因为out是service中的局部变量
    }
    static{
        System.out.println("oyeah");
    }
     %>

     <!--
     hello
      -->
      <%--shit --%>

      <%=session.getId() %>
  </body>
</html>

注意:开发中很少用。面试和考试经常考。

5.5JSP注释

语法:<%--这是JSP注释--%>

作用:注释掉的代码,JSP引擎不会翻译到Servlet源码中。要注意和HTML注释的区别。

html注释:<!--这是html注释-->

5.6JSP指令:

简介:

指令是为JSP引擎设计的。而只是告诉引擎如何处理JSP页面中的其余部分(非指令部分);

基本语法格式:<%@指令 属性1=”值1” ....%>.

一般把指令放在JSP页面的顶部(不是必须的)

指令的属性可以写在一个指令的中,也可以分开写:比如:

<%@指令 属性1=”值1” 属性2=”值2”%>.

等价于:

<%@指令 属性1=”值1” %>.

<%@指令 属性2=”值2”%>.

page:

属性:

language:告知引擎,脚本用的是java。默认java,支持java。不写也行。

extends:告知引擎,JSP对应的Servlet的父类是哪个。不需要写,也不要改。

*import:告知引擎,导入哪些包。

注意:引擎自动导入:java.lang.*;javax.servlet.*;javax.servlet.http.*;javax.servlet.jsp.*;

导入的形式:

<%@page import=”java.util.Date,java.util.UUID”%>或者:

<%@page import=”java.util.Date”%>

<%@page import=”java.util.UUID”%>  用Eclipse:Alt+/ 自动导入

*session:告知引擎是否产生HttpSession对象,即是否在代码中调用request.getSession()。默认值true。

buffer:JspWriter用于输出JSP的内容到页面上。告知引擎,设定他的缓存大小。默认8Kb。

*errorPage:告知引擎,当前页面出现了异常,应该转发到哪个页面上(路径写法:/代表着当前应用)

配置全局错误页面:web.xml

*isErrorPage:告知引擎,是否抓住异常。如果该属性为true,页面中就可以使用exception隐含对象,打印异常的详细信息。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="false"%>

<%=exception.getMessage()%>

*contentType:告知引擎,响应正文的MIME类型。

contentType=”text/html;charset=UTF-8” 相当于response.setContentType(“<%=exception.getMessage() %>”);

*pageEncoding:告知引擎,翻译JSP时(要从磁盘上读JSP文件)所用的码表。

pageEncoding 要和存在磁盘上的编码一致

在编译器中(myeclipse eclipse)不用担心,pageEncoding修改后 会自动转换为pageEncoding的编码

pageEncoding=”UTF-8”:相当于,告知了引擎用UTF-8读jsp,还response.setContentType(“text/html;charset=UTF-8”);

*isELIgnored:告知引擎,是否忽略EL表达式。默认值是false,不忽略。 ${1+1}

总结:属性众多。一般都用的默认值。用起来很简单,最简单的形式:

<%@ page  pageEncoding="UTF-8"%>

include:

包含

属性:file,以”/”开头,就代表着当前应用。

<%@include file="/07include.jsp"%>

taglib:

引入外部的标签。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

uri:外部的标签的uri地址,好比名称空间

prefix:前缀。

六、JSP中的转发和包含

1、转发:

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

JSP的内置标签。

2、参数:不能单独使用

向目标传递请求参数

3、包含:(面试题)

静态包含:<%@include%>

动态包含:其余的

<jsp:include page=””/>

总结:用标签可以少些java脚本。

七、JSP的九个隐含对象:(面试题)

JSP对应的Servlet的service方法中的局部变量


JSP隐含对象名称


类型


备注


request


javax.servlet.http.HttpServletRequest


response


javax.servlet.http.HttpServletResponse


session


javax.servlet.http.HttpSession


page指令有开关


application


javax.servlet.ServletContext


config


javax.servlet.ServletConfig


page


javax.servlet.http.HttpServlet


当前jsp对应Servlet的实例引用


exception


java.lang.Throwable


page指令有开关


out


javax.servlet.jsp.JspWriter


字符输出流。相当于PrintWriter


pageContext


javax.servlet.jsp.PageContext


很重要

八、JSP中的异常处理

1、运行时异常

以上情况找JSP对应的Servlet源码。

2、出现的错误(语法不对)

九、PageContext抽象类(很重要)

1、本身是一个域(范围)对象,还能操作其他3个域对象中的属性

l  页面范围:

void setAttribute(String name,Object value);

void removeAttribute(String name);

Object getAttribute(String name);

l  操作其他域对象中的属性:

void setAttribute(String name,Object value,int scope);

void removeAttribute(String name,int scope);

Object getAttribute(String name,int scope);

int scope:常量,PageContext   PAGE_SCOPE(页面) REQUEST_SCOPE(请求)SESSION_SCOPE(会话)APPLICATION_SCOPE(应用)

l  在四个范围中依次查找指定名称对象的方法:

PAGE(页面) REQUEST(请求)SESSION(会话)APPLICATION(应用)

Object findAttribute(String name);

2、获取其他八个JSP隐含对象(自定义标签时用)

PageContext.getRequest();

getServletContext();

getServletConfig();

getException();

get...

3、提供转发和包含的简易方法

pageContext.include(String url);

十、四大域对象

实际开发中:存放数据的。

PageContext:页面范围。最小。开发中很少用。演示代码。

ServletRequest:请求范围。不同的资源,只有用转发。

HttpSession:会话范围。多次请求共享数据,但不同的客户端不能共享。

ServletContext:应用范围。最大。尽量少用。用时要做同步处理。

十一、JSP开发的最佳实践

Servlet:擅长写Java代码逻辑,不擅长输出html的内容。

开发中作为:控制器。

JSP:不擅长写Java代码逻辑,擅长显示结果。

开发中作为:视图(显示结果)

十二、JavaBean的概念

1、JavaBean又称之为POJO(Plain Old Java Object)、VO(Value Object)、DO(Data Object)

2、JavaBean的书写规范

a、必须是public的

b、提供默认的构造方法

c、字段都是私有的: private String username;

d、提供公有的getter或setter方法:属性。

getUsername():读属性,属性名:username.

setUsername(String username):写属性,属性名:username。

注意:private boolean married;   getMarried()===isMarried()

e、一般需要实现java.io.Serializable接口。

结论:JavaBean在JavaEE开发中,主要担当封装数据用的。

十三、JSP中使用JavaBean

1、导入JavaBean:用page指令的import

2、声明JavaBean:

3、获取属性:

如果属性是null,那么界面就显示null。

4、设置属性:

注意:类型的转换问题

可以使用请求参数设置JavaBean的属性。

5、JavaBean的存活范围:

声明JavaBean时,指定scope属性。默认值page,当前页面范围。

可选值:page|request|session|application

总结:JSP+JavaBean,开发模型,Model1(模型1)

时间: 2024-10-10 04:29:05

JavaWeb 后端 <五> 之 JSP 学习笔记的相关文章

JavaWeb 后端 &lt;二&gt; 之 Servlet 学习笔记

JavaWeb 后端 <二> 之 Servlet 学习笔记 一.Servlet概述 1.什么是Servlet Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应. 2.Servlet中的方法 public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException ServletRequest req:代表着请

Servlet&JSP学习笔记

Servlet&JSP学习笔记 */--> Servlet&JSP学习笔记 Table of Contents 1 Web容器 2 内置对象 2.1 内置对象分类 2.1.1 out 2.1.2 request 2.1.3 application 2.1.4 response 2.1.5 session 2.1.6 其他 3 JavaBean 3.1 JSP动作元素 3.2 javabean的四个作用於范围 4 JSP状态管理 4.1 Cookie 4.2 include 指令与动作

十五、Android学习笔记_授权过程

1.需要申请App Key和App Secret.不同的开发平台有不同的接入方式,可以参考文档,然后将这两个值放进去. 2.通过OAuth类实现认证,它会自动跳转到认证界面,进行授权,成功之后需要处理回调接口. 3.在第二步调用回调接口时,它会返回用户的基本信息,比如用户id.此时需要将用户id信息保存起来,为后面登录做准备.回调接口的写法就为myapp://AuthorizeActivity,其中scheme全部为小写字母. <activity android:name="com.wei

Servlet&amp;Jsp学习笔记归纳图(一)

转载请注明出处!!!版权必究!! 以下是Servlet&Jsp的学笔记归纳图,详细内容以及相关代码会在后面整理完成 后给出 使用的是思维导图工具:MindManager 6 最新版本是2013,有兴趣的自己百度下载,功能更多,安装有点麻烦 以下提供版本6绿色版免安装版下载: http://pan.baidu.com/s/1jGqlnXc 本节思维导图文件下载:http://pan.baidu.com/s/1eQGbMSU Servlet&Jsp学习笔记归纳图(一),布布扣,bubuko.c

第五周JAVA学习笔记(五)

将指定目录下的所有文件显示到列表框(JList)组件中, :效果图如下:                  import java.awt.BorderLayout; import java.io.File; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; public class kuang { public st

JSP学习笔记(二)

第五章 Javabean 5.1 Javabean简介 Javabeans就是符合某种特定的规范的Java类.使用Javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性. - 是一个共有的类 - 属性是私有的 - 属性全部用get.set方法封装 - 包含无参的共有构造方法 5.2 Jsp动作 5.2.1 Jsp动作的概念 Jsp动作元素(action elements),动作元素为请求处理阶段提供信息.动作元素遵循XML元素的基本语法,有一个包含元素名的开始

JSP学习笔记(五):自定义标签-JSP1.x

1.任何一个标签都对应一个Java类,该类必须实现Tag接口. 2.一个标签可以通过 tld 文件查找该标签的是实现类,并运行该类的相关方法. 一.简单标签实现 (一)实现Tag接口 1.实现代码: <span style="font-family:Arial;">package taglib.jsp_one; import java.io.IOException; import java.util.ResourceBundle; import javax.servlet.

JSP学习笔记(五):日期处理

一.JSP 日期处理: 使用JSP最重要的优势之一,就是可以使用所有Java  API.本节讲述Java中的Date类,它在java.util包下,封装了当前日期和时间. Date类有两个构造函数.第一个构造函数使用当前日期和时间来初始化对象:Date( ) 第二个构造函数接受一个参数,这个参数表示从1970年1月1日凌晨至所要表示时间的毫秒数:Date(long millisec) 获取Date对象后,可使用下列方法: boolean after(Date date):如果比给定的日期晚,则返

Head First Servlets &amp; JSP 学习笔记 第五章 —— 作为Web应用

初始化参数:(init-param) 初始化参数写在web.xml文件中:(写在<servlet>标签内部) 1 <servlet> 2 <servlet-name>BeerAdvisorServlet</servlet-name> 3 <servlet-class>com.example.web.BeerServlet</servlet-class> 4 5 <init-param> 6 <param-name&g