java web动态网页_JavaWeb-动态页面技术JSP

JavaWeb-动态页面技术JSP

通过了解JSP的历史可以知道JSP的本质就是Servlet,而其中直接写的HTML标签是JSP自动帮我们翻译成java代码从而输出实现的。

JSP脚本

格式

说明

简单讲

java代码进入servixe()内部

就像是service()内部的代码

进入service()内部的out.print()页面输出

只能是要输出的内如

成为Servlet的成员内容

成员位置就可以定义方法了

JSP注释

由于JSP既可以写java代码又可以写HTML代码再加上本身的JSP,因此其中有三种代码注释,不同的注释可见范围是不同的。

语言

格式

可见范围

HTML

JSP源码、翻译后的Servlet、页面HTML源码

Java

单行//多行/**/

JSP源码、翻译后的Servlet

JSP

仅JSP源码

JSP运行原理

jsp在第一次被访问时会被Web容器翻译成Servlet

过程:第一次访问 --> hello.jsp --> hello_jsp.java --> 编译运行

JSP指令

jsp的指令是指导jsp翻译和运行的命令

page指令

属性最多的指令,指导整个页面特性

格式:

属性

说明

language

可以嵌入的语言,就一个java

pageEncoding

jsp文件编码,内部可以包含contentType

contentType

解决乱码,reponse对象中的

session

翻译时是否自动创建session

import

导入java包

errorPage

错误跳转页面

isErrorPage

当前页面是一个错误处理页面

include指令

可以将一个jsp页面包含到另一个jsp页面中

格式:

taglib指令

在jsp页面中引入标签库(jstl标签库、struts2标签库)

格式:

JSP内置/隐式对象(9个)

JSP被翻译成servlet后,service()方法中有9个对象被初始化,可以在JSP脚本中直接使用,无需声明

名称

类型

描述

out

javax.servlet.jsp.JspWriter

用于页面输出

request

javax.servlet.http.HttpServletRequest

得到用户请求信息

response

javax.servlet.http.HttpServletResponse

服务器向客户端的回应信息

config

javax.servlet.ServletConfig

服务器配置,可以取得初始化参数

session

javax.servlet.http.HttpSession

用来保存用户的信息

application

javax.servlet.ServletContext

所有用户的共享信息

page

java.lang.Object

指当前页面转换后的Servlet类的实例(在普通类中的this)

pageContext

javax.servlet.jsp.PageContext

JSP的页面容器

exception

java.lang.Throwable

表示JSP页面所发生的异常,在错误页中才起作用

总结:

四个域对象request,session,pageContext,application

两个输出:out,response

配置信息,this,异常

四种范围对象

->

->

pageContext

request

session

application

当前页面有效

同一次请求有效(重定向无效)

同一次会话有效

全局有效(整个项目)

公用的方法

1.request:请求对象;存储“客户端向服务器请求的信息”

常用方法:

方法

介绍

String[] getParameterValues(String name)

根据请求的字段名key(input中的name属性),返回多个字段值value(checkbox)

void setCharacterEncoding(“编码格式“)

设置请求编码(tomcat7以前默认iso-8859-1,8以后utf-8)

getRequestDispatcher(b.jsp").forward(request, response)

请求转发的方式跳转页面A-B

getServerContext()

获取项目的ServletContext对象

2.response:响应对象

常用方法:

方法

介绍

void addCookie(Cookie cookie)

服务端向客户端增加cookie对象

void sendRedirect(String location) thorows IOException

页面跳转的一种方式

void contentType(String type)

设置服务端响应的编码(设置服务端的contentType类型)

3.session:

一个session对应一个client上的cookie。

会话,从开始到结束为一次会话。第一次请求会生成一个session并生成sessionID,将sessionID复制一份存放在client的cookie中与session一一对应。

同一次会话共享一个session

方法

介绍

String getId()

获取ssessionId(JSEESIONID)

boolean isNew()

判断是否是新用户(第一次访问)

void invalidate()

使session失效(退出登录、注销)

void setAttribute()

Object getAttribute()

void setMaxInactiveInterval("s")

设置最大有效非活动时间

int getMaxInactiveInterval()

获取最大有效非活动时间

Cookie():由服务端生成,发送给客户端保存。相当于本地缓存。

作用:提高访问服务端的效率,但是安全性较差。

存在客户端,不是内置对象,使用必须New,不能直接使用

服务器会自动生成一个cookie(name=JESSIONID)并返回给客户端

Cookie:key=value

javax.servlet.http.Cookie

public Cookie(String name, String value)

方法

介绍

String getName()

获取name

String getValue()

获取value

void setMaxAge(int expiry)

最大有效期(秒)

服务端准备给客户端

response.addCookie(Cookie cookie)

页面跳转(转发,重定向)

客户端获取

cookie:request.getCookies()

不能单独获得某一个cookie值,必须一次全部获取

4.application

方法

介绍

String getContextPath()

获取虚拟路径

String getRealPath()

获取绝对路径(虚拟路径相对的绝对路径)

5.config:配置对象(服务器配置信息)

6.page:当前JSP页面对象(相当于java中的this)

7.out:输出对象

向客户端输出文本内容

类型:JspWriter

作用:向客户端输出内容out.write()

细节:out对象输出时先进入out对象的缓冲区,在进入response缓冲区,再由Tomcat引擎打包返回客户端,因此如果当前有多个输出,使用response对象输出的内容先进response缓冲区,即先输出以response输出的内容。

out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到respons缓冲器

常用方法:

out.println();

out.print();

注意:在jsp中println()不会换行,与print()作用相同

8. exception:异常对象

9.pageContext

pageContext对象

jsp页面的上下文对象

作用

1、除了通用的三个域对象方法pageContext还可以像其他指定的域中存取数据

setAttribute(String name,Object obj,int scope)

getAttribute(String name,int scope)

removeAttrbute(String name,int scope)

findAttribute(String name)//依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找

2、可以获得其他8大隐式对象

例如

pageContext.getRequest()

pageContext.getSession()

使用pageContext对象向其他域对象中存取值

pageEncoding="UTF-8"%>

Insert title here

// 向pageContext域中存值

pageContext.setAttribute("username", "小红帽");

// 取值输出

response.getWriter().write((String)pageContext.getAttribute("username"));

// 向request域中存值

pageContext.setAttribute("username", "大红帽",PageContext.REQUEST_SCOPE);

// 向session域中存值

pageContext.setAttribute("username", "小蓝帽",PageContext.SESSION_SCOPE);

// 向application域中存值

pageContext.setAttribute("username", "小黄帽",PageContext.APPLICATION_SCOPE);

%>

// 分别输出

include指令引入其他页面

pageEncoding="UTF-8"%>

Insert title here

内容

错误跳转

pageEncoding="UTF-8" session="true" errorPage="error.jsp"%>

Insert title here

session.setAttribute("name", "张三");

ArrayList arr = new ArrayList();

int y = 1/0;

%>

使用Servlet输出简单网页

package com.oracle.web;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

/**

* 使用Servlet输出html标签

*/

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

response.getWriter().write("");

response.getWriter().write("

");

response.getWriter().write("

百度一下,你就知道");

response.getWriter().write("");

response.getWriter().write("

");

response.getWriter().write("跳转到百度");

response.getWriter().write("");

response.getWriter().write("");

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值