JSP初步

JSP初步



一、JSP简介

 JSP,即Java Server Pages,Java 服务器端页面,一个特殊页面,其中既可以指定定义html标签,又可以定义Java代码.其根本是一个简化的Servlet设计。
 JSP的页面元素由指令、表达式、小脚本、声明、注释、静态内容六部分构成。


二、JSP指令

page指令

 page指令通常位于jsp页面的顶端,同一个页面可以有多个page指令。
 page指令的语法为:

<%@ page 属性1="属性值" 属性2="属性值1, 属性值2..." 属性n="属性n" %>

page中的常用属性分别为:

属性描述
language用于指定JSP页面使用的脚本语言,默认为Java
import用于引用脚本语言中使用到的类文件
contentType用于指定JSP页面所使用的编码方式
pageEncoding用于指定JSP页面所使用的字符集
errorPage用于设置当JSP页面运行出现异常时自动跳转到的页面的路径
isErrorPage用于设置当前JSP页面是否是错误信息页面,默认值为false
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.io.*" %>

这是一个常见的page指令,使用Java语言,text/html;charset=UTF-8编码方式并导入了java.io类

include指令与taglib指令

 此外,JSP中还有include指令与taglib指令,其中include指令用于将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句;
 taglib指令则用于使用标签库定义新的自定义标签,在jsp页面中启用定制行为。


2、JSP注释

HTML注释:

<!--html注释-->:客户端可见,即可以通过查看页面源代码操作看到

JSP注释:

<%--jsp注释--%>:客户端不可见

jsp脚本注释:
 一般即为Java注释

<%
// 单行注释

/*
多行注释
*/

%>

3、JSP常用脚本

JSP声明
 用于在jsp页面中定义变量或方法。

<%! 
	Java代码 
%>

JSP表达式
 在jsp页面中执行的表达式

<%= 表达式 %> // 需注意表达式不以分号结束

JSP代码
 用于在jsp页面中编写Java代码

<%
	Java语句
%>

 下面是一段简单的代码演示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>My Test</title>
</head>
<body>
<%!
    public class Student {
        private String name;

        public void setName(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }
    }

%>
<%
    Student student = new Student();
    student.setName("Tom");
%>
学生的姓名为:<%=student.getName()%><br>
</body>
</html>

启动Tomcat服务器后浏览器的运行结果为:

在这里插入图片描述


4、JSP内置对象

JSP的内置对象指的是Tomcat服务器将JSP页面翻译为Java类之后内部提供的九大对象:

  • out
  • request
  • response
  • session
  • application
  • page / pageContext / exception / config

 下面将介绍几个常用对象。

out对象

 out对象是JspWriter类的实例,是向客户端输出内容的常用对象。

 out对象的常用方法:

void println();向客户端打印字符串

void clear();清除缓冲区内容,若在flush之后调用会抛出异常

void clearBuffer();清除缓冲区内容

void flush();将缓冲区的内容输出到客户端

int getBufferSize();返回缓冲区的大小,单位为字节,若不设缓冲区则为0

int getRemaining();返回缓冲区剩余多少可用

void close();关闭输出流

request对象

 request对象是HttpServletRequest类的实例,通过它可以了解到客户端的请求信息,然后做出相应。

 request对象的常用方法:

String getParameter(String name);返回name指定参数的参数值

String[] getParameterValues(String name);
返回包含参数name的所有值的数组
void setAttribute(String , Object);存储此请求中的属性

object getAttribute(String name);返回指定属性的属性值

String getprotocol();返回请求用的协议类型及版本号

String getServerName();返回接受请求的服务器主机名

void setCharacterEncoding();设置请求的字符编码方式

String getCharacterEncoding();返回字符编码方式

String request.getContextPath();返回上下文路径

response对象

 response对象是HttpServletResponse类的实例,response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其他页面的response对象对该页面无效。

 request对象的常用方法:

String getCharacterEncoding();返回响应用的字符编码方式

PrintWriter getWriter();返回可以向客户端输出字符的一个对象

sendRedirect(java.lang.String location);重新定向客户端的请求

getRequestDispatcher().forward(req, resp);重新转发客户端请求

 response.getWriter 输出与out输出的区别:

在这里插入图片描述
图片引用自:JSP的基本使用总结

请求重定向请求转发的区别:
 请求重定向是客户端行为,从本质上讲等于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。
 请求转发是服务器行为,是一次请求,对象会保存,地址栏的URL地址不会改变。


session对象

 session对象是HttpSession类的实例,它在第一个JSP页面被装载时自动创建,完成会话期管理。

 session对象的常用方法:

long getCreationTime();返回session产生的时间

long getMaxInactiveInterval();返回session不活动的最长时间,若超过这时
间session将会失效

void invalidate();取消session对象,其存放的内容将被抛弃

void setMaxInactiveInterval(int interval);
设定session不活动的最长时间,若超过该时间,session将会失效

application对象

 application对象是ServletContext 类的实例。实现了用户间数据的共享,可用于存放全局变量。它开始于服务器启动,终止于服务器关闭。

 session对象的常用方法:

void setAttribute(String , Object);存储此请求中的属性

object getAttribute(String name);返回指定属性的属性值

Enumeration getAttributeNames();返回所有可用属性名的枚举

String getSeverInfo();返回JSP(Servlet)引擎名及版本号

其他对象

page 对象是java.lang.Object类的实例,指向当前JSP页面本身,类似于类中的this指针。

pageContext 对象为JSP的上下文对象。

exception 对象是java.lang.Throwable的实例,是一个异常对象。当一个页面产生异常时就会产生该对象,若要应用此对象需将isErrorPage设为true。

config 对象里存放着一些Servlet 初始的数据结构。


5、JSP动作

 JSP有6个基本动作,分别为:include、usebean、forward、setProperty、getProperty、plugin


include:在页面被请求时引入一个文件。

  1. include指令:
<@% include file="URL"%>
在一个页面中包含另一个页面

简单测试:

// 先创建一个hw.jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    out.println("Hello World!");
%>
</body>
</html>
// 将hw.jsp文件包含入test.jsp中
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>My Test</title>
</head>
<body>

文件hw.jsp中的内容为:
<%@ include file="hw.jsp" %>
</body>
</html>

运行后结果:
在这里插入图片描述


  1. include动作:
<jsp:include page="URL" flush="true|false"/>
page 表示要被包含的页面
flush 表示被包含的页面是否从缓冲区读取	

include指令与include动作的区别

在这里插入图片描述
图片引用自:include指令与include动作的区别


 Javabeans就是符合某种特定规范的Java类。使用Javabeans可以解决代码的重复编写,减少代码冗余,明确功能区分,提高了代码的维护性。
usebean:在JSP页面中实例化或在特定范围内使用Javabean

<jsp:useBean id="标识符" class="java类名" scope="作用范围" />
如果找不到class中的类,则将创建一个对象
scope的范围即:page、request、session、application,默认值为page

setProperty:给已实例化的javabean对象设置属性

<jsp:setProperty name="beanName" property="javaBean属性名" value="beanValue">

getProperty:获取指定的javabean对象的属性值

<jsp:getProperty name="javaBean实例名" Property="属性名" />

简单的代码演示:
先创建一个Students类

package com.example.jsptest;

public class Students {
    private String name;
    private int age;

    public Students() {
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }
}

再调用上述方法:

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>My Test</title>
</head>
<body>
<jsp:useBean id="myTest" class="com.example.jsptest.Students"/>
<jsp:setProperty name="myTest" property="name" value="Tom"/>
<jsp:setProperty name="myTest" property="age" value="18"/>
Student's name is
<jsp:getProperty name="myTest" property="name"/>
</br>
Student's age is
<jsp:getProperty name="myTest" property="age"/>
</body>
</html>

运行结果为:
在这里插入图片描述


forward:把请求转到一个新的页面

<jsp:forward page="URL" />

 forward跳转为服务器端跳转,地址栏的URL地址不变。等同于getRequestDispatcher().forward(req, resp) 方法。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值