JSP学习(当年做的知识记录)

来源:互联网 发布:使用node创建webapi 编辑:程序博客网 时间:2024/04/29 16:50

第一章 JSP基本语法

1 JSP简介

1.1 Jsp页面元素构成:静态内容,指令,表达式,小脚本,声明,注释

1.2 JSP指令元素:

1.2.1 Page指令:通常位于页面的顶端,同一个页面可以有多个PAGE指令

Page指令语法格式:

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

属性:language  指定JSP页面使用的脚本语言,默认为JAVA

import    通过该属性来引用脚本语言中使用的类文件 无默认值

: contentType  用来指定JSP页面所采用的编码格式 默认值:text/html ISO-8859-1

1.2.2include指令:将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句

1.2.3Taglib指令:使用标签库定义新的自定义标签,在JSP中启用定制行为

2 JSP注释

HTML注释:<!--html注释-->  //客户端可见

JSP的注释<%--html--%>  //客户端不可见

JSP脚本注释: ///*   */

3 JSP脚本

作用:在JSP页面中执行JAVA代码语法

语法:<%java代码%>

4 JSP声明

作用:在JSP页面中定义变量或者方法

语法:<% ! java代码%>

5 JSP表达式

作用:在JSP页面中执行的表达式

语法:<% =

  java代码

%>   //表达式不以分号结束

6 JSP页面的生命周期

用户发出请求(index.jsp)--------是否是第一次请求--------是则JSP引擎把该JSP文件转化成为一个Servlet,生成字节码文件并执行JspInit()(不是第一次生成则直接去访问之前生成的字节码文件)-----解析执行,jspService()

第二章 JSP内置对象

1 JSP内置对象简介

JSP内置对象是Web容器创建的一组对象,不使用New关键字就可创建对象

9大内置对象:

Out,request,response,session,application,Page,pageContext,exception,config

2Web程序的请求与响应模式

用户发送请求(request

服务端给用户响应(response)

3 OUT对象

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

常用的方法如下:1 void println();向客户端打印输出字符串

2 void clear();清楚缓冲区的内容,如果在flush 之后调用会抛出异常

3 void clearBuffer()清楚缓冲区内容,如果在flush 之后调用不会抛出异常

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

5 int getBufferSize()返回缓冲区以字节数的大小,如果不设缓冲区则为0

6 int getRemaining()返回缓冲区还剩多少可用

7 boolean isAutoFlush()返回缓冲区满时,是自动清空还是抛出异常

8 void close() 关闭输出流

4 getpost方法的区别

<form name=”regForm” action=”动作”method=”提交方式”> </form>

表单有两种提交方式:get post

1.  get:以明文的方式通过url提交数据,数据在url中可以看到,提交的数据最多不能超过2kb,安全性较低但效率比post要高,适宜提交安全性不高,数据量不大的数据,如搜索查询等

2. post:将用户信息封装在HTML HEADER内,适宜提交数据量大,安全性高的用户信息,如,登录,上传。

5 request对象  

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。

Ps1String getParameter(String name)//获取单个参数值

Ps2String[] getParameterValues(String name)//获取多个参数值,如获取checkbox的值

Ps3request.setCharacterEncoding(utf-8);//解决post请求传递中文参数的乱码问题,设置的编码要与发送请求的页面的编码设置的一致。但是无法解决URL链接传递中文参数的乱码问题

Ps4tomcat/conf/server.xml;//解决get请求和URL链接传递中文参数的乱码问题,可将ConnectorURIEncoding="UTF-8"

Ps5href="request.jsp?user=李四"//里面写值的时候可以不需要引号

设置属性:<%request.setAttribute("pwd","123456"); %>

获取密码:<%=request.getAttribute("pwd") %><br>

请求体的MIME类型:<%=request.getContentType() %><br>

协议类型及版本号:<%=request.getProtocol() %><br>

服务器主机名:<%=request.getServerName() %><br>

服务器端口号:<%=request.getServerPort() %><br>

请求文件的长度:<%=request.getContentLength() %><br>

请求客户端的IP地址:<%=request.getRemoteAddr() %><br><!--//只能获取静态的IP地址,动态的话获取不到-->

请求的真实路径:<%=request.getRealPath("request.jsp") %><br>

请求的上下文路径:<%=request.getContextPath() %><br>

 

6 response对象  

包含了响应客户请求的信息,response具有对象作用域,及访问一个页面时,该页面内的response对象只对这次访问有效

请求重定向:客户端行为response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变

请求转发:服务器行为,request.getRequestDispatcher().forward(request,response)一次请求,转发后请求对象会保存,地址栏URL对象保持不变

7 session对象

session表示客户端与服务器的一次会话

Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段 时间,也就是用户浏览网站所花费的时间。

从上述定义中可以看到,session实际是一个【特定的时间概念】

1.创建:当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验

2.活动:

①某次会话当中通过超链接打开的新页面属于同一次会话

②只要当前会话页面没有全部关闭,重新打开的浏览器窗口访问同一个项目资源时属于同一次会话

③除非本次会话的所有页面都关闭后在重新访问某个JSP或者servlet将会创建新的会话

注意:注意原有会话还存在,只是这个旧的Session仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验

3.销毁:三种方式

①调用了session.invalidate()方法

Session过期(超时)

③服务器重新启动

 

PsTomcat默认session超时时间:处于非活动状态30分钟自动销毁;session销毁时,服务器那边也会销毁。

8 application对象

application介绍

1、实现了用户间数据的共享,可存放全局变量。(类似静态对象)

2、开始于服务器启动,终止于服务器的关闭(生命周期)

3、在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作

4、在任何地方对application对象属性进行操作,都将影响到其他用户对此的访问

5application对象是ServletContext类的实例

9 page对象

JSP内置对象——page对象

page对象:就是指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例。

常用方法如下:主要是object类中声明的方法

class getClass(); //返回此Object

int hashCode(); //返回此Objecthash

boolean equals(Object obj); //判断此Object是否与指定的Object对象相等

void copy(Object obj); //把此Object复制到指定的Object对象中

Object clone(); //克隆此Object对象

String toString(); //把此Object对象转换为String类的对象

void notify(); //唤醒一个等待的线程

void notyfyAll(); //唤醒所有等待的线程

void wait(int timeout); //使一个线程处于等待直到timeout结束或被唤醒

void wait(); //使一个线程处于等待直到被唤醒

10 pageContext对象

1)提供了对JSP页面中所有对象及名字空间的访问操作

2)可以访问本页面的session,可以访问本页面的application对象的任意属性值

3)是某个页面中所有功能的集大成者

 

pageContext对象的常用方法:

1JspWriter getOut()返回当前客户端相应被使用的JspWriter流(out

2HttpSession getSession()返回当前页面中HttpSession对象(session

3Object getPage()返回当前页面的Object对象(page

4ServletRequest getRequest()返回当前面的ServletRequest对象(request

5servletResponse getResponse()返回当前页的ServletResponse对象(response

6void setAttribute(Strign name, Object attribute)设置属性及属性值

7Object getAttribute(String name ,int scope)在指定范围内取属性值

8int getAttributeScope(String name)返回某属性的作用范围

9void forward(String relativeUrlPath)使当前页面跳转到另外一个页面(服务器转发)

10void include(String relativeUrlPath)在当前位置包含另一个文件

 

 

第三章 JavaBeans

一、什么是javabean

1Javabeans就是符合某种特定规范Java类。使用Javabeans的好处是【解决代码的重复编写】,减少代码冗余,功能区分明确,提高代码的维护性。

2、设计原则四点:公有类,属性私有,包含无参的共有构造方法,gettersetter方法封装属性

JSP中使用JavaBean有两种方法:

3、在src下按照规则新建一个JavaBean类,然后再WebRoot下对应的jsp文件中,在声明里新建一个JavaBean类,然后赋值、使用。

4、或是使用JSp的动作标签,如<jsp:useBean id="标识符(类似于Java中的new出来的实例变量名)" class="java类名(需要将包名一同写入)" scope="作用范围(默认是page)">

二、setProperty

<jsp:useBeans>动作:在jsp页面中实例化或者在指定范围内使用javabean

1<jsp:useBean id="标示符" class="java类名" scope="作用范围" />

2、【其中标示符为对象引用;java类名需要使用全名】

 

<jsp:setProperty>动作:给【已经实例化的Javabean对象的属性赋值】,一共有四种形式。

1、需要表单提交属性:<jsp:setProperty name="Javabean实例名" property="*"/>: 与之前页面提交的表单的【所有属性进行匹配】,若有与javabean类属性名相同的,则进行赋值。比如表坛提交了username="xxx",而javabean里有username属性,则对其进行赋值

2、需要表单提交属性<jsp:setPropery name="Javabean实例名" property="javabean属性名" />:对【指定的属性进行匹配】

3、手动设置属性:<jsp:setProperty name = "Javabean实例名" property="Javabean属性名" value="BeanValue" />

4、与request参数有关,通过url传参 :<jsp:setProperty name="Javabean实例名" property="propertyName" param="request对象中的参数名" />

 

1.根据表单自动匹配所有的属性

<jsp:setProperty name="myUsers" property="*"/>

2.根据表单自动匹配相应的属性(部分匹配)

<jsp:setProperty name="myUsers" property="username"/>

3.与表单无关,通过手工赋值给属性

<jsp:setProperty name="myUsers" property="username" value=Lisa/>

4.通过url传参数给属性赋值

<jsp:setProperty name="myUsers" property="username"/>

<jsp:setProperty name="myUsers" property="password" param=mypass/>

 

三、getProperty

<!-- 使用传统的表达式方式来获取用户名和密码 -->

<%--

用户名:<%=myUser.getName()%><br>

密码:<%=myUser.getPassword()%>

--%>

<!-- 使用getProperty方式来获取用户名和密码-->

用户名:<jsp:getProperty property="name" name="myUser"/>

密码:<jsp:getProperty property="password" name="myUser"/>

五、JavaBean作用范围

JavaBean的生命周期存在于4种范围之中,分别为pagerequestsessionapplication,它们通过<jsp:useBean>标签的scope属性进行设置。这4种范围虽然存在很大的区别,但它们与JSP页面中的pagerequestsessionapplication范围相对应。

 

page范围:与当前页面相对应,JavaBean的生命周期存在于一个页面之中,当页面关闭时JavaBean被销毁。

 

request范围:与JSPrequest生命周期相对应,JavaBean的生命周期存在于request对象之中,当request对象销毁时JavaBean也被销毁。

 

session范围:与JSPsession生命周期相对应,JavaBean的生命周期存在于session会话之中,当session超时或会话结束时JavaBean被销毁。

 

application范围:与JSPapplication生命周期相对应,在各个用户与服务器之间共享,只有当服务器关闭时JavaBean才被销毁。

 

4种作用范围与JavaBean的生命周期是息息相关的,当JavaBean被创建后,通过<jsp:setProperty>标签与<jsp:getProperty>标签调用时,将会按照pagerequestsessionapplication的顺序来查找这个JavaBean实例,直至找到一个实例对象为止,如果在这4个范围内都找不到JavaBean实例,则抛出异常。

六、Cookie

Cookie的作用:

1.保存用户对象的追踪;

2.保存用户网页浏览记录与习惯;

3.简化登录;

4.容易泄露用户信息。

 

典型应用三:系统会自动记录已经浏览过的视频。

典型应用四:记住用户名和密码实现自动登录功能

 

 

sp中创建与使用Cookie

1、创建Cookie对象:

Cookie cookie=new Cookie(String key,Object value);

2、写入Cookie

response.addCookie(cookie);

3、读取Cookie

Cookie[] cookies=request.getCookies();

第三章JSP指令与动作元素

一、Include指令

常用的有pageincludetaglib指令这三种指令;

page:位于页面顶端,一个页面可以包含多个page指令。

include:将一个外部文件嵌入jsp中,同时解析这个页面中的jsp语句。

taglib:使用标签库,自定义新的标签,在jsp中启动定制行为。

 

include指令

1.语法 <%@ include file="地址"%>

案例:显示当前时间的页面。(1)写一个只输出时间的方法的date.jsp。(2)用于显示的页面,包含<% include file="date.jsp"%>

include<br>

指令和动作<<br>

指令:<%@ include file ="URL"%><br>

动作:<jsp:include page ="URL" flush="true|false"><br>

forward动作<jsp:forward url=""></jsp:forward><br>

param动作 <jsp: param name="" value=""></jsp:>主要和forward一起使用

 

Include动作

1语法<jsp:include page=”..”>

发生在请求时间,包含的内容:页面的输出