JavaWeb基础-Jsp基础语法

时间:2023-03-08 17:28:13

jsp基础语法

JSP的组成

静态内容、指令、表达式、小脚本、声明、注释

JSP的生命周期

JavaWeb基础-Jsp基础语法

用户发出index.jsp ,服务端判断是否是第一次请求,若是第一次请求,则tomcat中的JSP引擎中的文件转化成一个servlet,生成字节码文件,并执行jspinit()方法,然后再生成字节码文件,若不是第一次请求,则会直接访问生成字节码文件,解析执行,jspservice()方法就是处理用户请求的。

jspservice()方法处理客户端的请求,对于每一个请求,JSP引擎创建新的线程来处理,对于多个客户端,引擎会创建多个线程,提高并发量和响应时间。

脚本程序

脚本<%%>

表达式<%=%>

声明<!%%>

表达式<%=%> 不以分号结尾

中文编码

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

Jsp的页面元素

JavaWeb基础-Jsp基础语法

JSP指令

page指令 通常位于JSP的顶端,同一个页面可以有多个page指令

include指令 将一个外部的文件嵌入JSP中,同时解析这个JSP页面

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

Page指令

Language 指定JSP页面使用的脚本语言

Import 引用脚本语言中使用到的类文件

ContentType 指定JSP页面所采用的的编码方式

JSP注释

Html注释 客户端可见

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

JSP脚本注释 // 单行注释 /**/多行注释 客户端不可见

jsp的脚本声明表达式

Javabean

简介:符合某种特定规范的java类,可以解决代码的重复编写,减少代码的冗余,提高维护性

Javabean的出现,使JSP页面使用了javaBean封装了数据,或者调用javabean的业务逻辑代码,提升了程序的可维护性。

设计原则:公有类,无参的公有构造方法,属性是私有的,getter和setter方法

JSP的动作元素:为请求处理阶段提供信息,动作遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选的内容,与开始便签匹配的结束标签。

JSP动作

简介:符合某种特定规范的java类,可以解决代码的重复编写,减少代码的冗余,提高维护性

设计原则:公有类,无参的公有构造方法,属性是私有的,getter和setter方法

JSP的动作元素:为请求处理阶段提供信息,动作遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选的内容,与开始便签匹配的结束标签。

JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。

JavaWeb基础-Jsp基础语法

id属性

id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。

scope属性

该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。

jsp:include动作元素

jsp:include动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。

JavaWeb基础-Jsp基础语法

jsp:useBean动作元素

jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。

引用javaBean文件

<jsp:useBean id="myusers" class="com.po.Users" scope="page">

</jsp:useBean>

jsp:setProperty动作元素

jsp:setProperty用来设置已经实例化的Bean对象的属性

调用javaBean

<jsp:setProperty property="*" name="myusers"/>根据表单自动匹配所有属性
<jsp:setProperty property="username" name="myusers"/>根据表单匹配部分属性
<jsp:setProperty property="username" name="myusers" value="wangwei"/>跟表单无关,通过手工赋值给属性

sp:setProperty动作有下面四个属性

JavaWeb基础-Jsp基础语法

jsp:getProperty动作元素

jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。

<jsp:getProperty property="password" name="myusers"/>使用getProperty方式获取用户名和密码

javabean的四个作用域范围

Page 仅在当前页面有效

Request 可以通过httpRequest.getAttribute()方法获取JavaBean对象

session 可以通过httpSession.getAttribute()方法获取JavaBean对象

application 可以通过application.getAttribute()方法获取JavaBean对象

jsp:forward 动作元素

jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。

JavaWeb基础-Jsp基础语法

jsp:elementjsp:attributejsp:body动作元素

jsp:elementjsp:attributejsp:body动作元素动态定义XML元素。动态是非常重要的,这就意味着XML元素在编译时是动态生成的而非静态。

jsp:text动作元素

jsp:text动作元素允许在JSP页面和文档中使用写入文本的模板

jsp:text模板数据</jsp:text>

include指令和动作的区别

JavaWeb基础-Jsp基础语法

forward动作

<jsp:forward page=”URL”/> 等同于服务器请求转发:

Request.getRequestDispather(“/url”).forward(request,response);

param动作

<jsp:param name=”参数名” value=”参数值”> 常与<jsp:forward >一起使用,作为其子标签,也可以修改参数值

JSP的内置对象

JSP以java为脚本语言,为了简化开发,提供了内置对象。

JSP的内置对象是WEB容器创建的一组对象,不使用new关键就可以使用的内置对象

常用内置对象 九大内置对象 out.request.response.session.application

Page.pageContext.exception.config

JavaWeb基础-Jsp基础语法

缓冲区 buffer 保存临时数据

Void println() 打印字符串

Void clear() 清除缓冲区的内容,在flush之后调用会抛出异常。

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

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

Int getremaining() 返回缓冲区还剩余多少可用

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

Void close() 关闭输出流

表单处理

Get:以明文的方式提交数据,数据在URL中可以看到,最多不能超过2K,安全性低效率高,比如搜索查询。

Post:将用户的信息封装到HTML HEADER中,适合提交数据量大,安全性高的用户信息,如注册修改上传

JSP 读取表单数据

getParameter(): 使用 request.getParameter() 方法来获取表单参数的值。

getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据。 接收数组变量 ,如checkbox类型

getParameterNames():该方法可以取得所有变量的名称,该方法返回一个Emumeration。

getInputStream():调用此方法来读取来自客户端的二进制数据流。

可读取URl和表单数据(get和post)

<%= request.getParameter("name")%>

<%= request.getParameter("url")%>

注意:

<%// 解决中文乱码的问题String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8");

%>

读取所有表单参数

HttpServletRequest 的 getParameterNames() 来读取所有表单参数,该方法可以取得所有变量的名称,该方法返回一个枚举。

获取

<%
Enumeration paramNames = request.getParameterNames(); while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getParameter(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>

请求

<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="runoob" /> 菜鸟教程
<input type="checkbox" name="taobao" checked="checked" />淘宝
<input type="submit" value="选择网站" />
</form>