jsp基础语法
JSP的组成
静态内容、指令、表达式、小脚本、声明、注释
JSP的生命周期
用户发出index.jsp ,服务端判断是否是第一次请求,若是第一次请求,则tomcat中的JSP引擎中的文件转化成一个servlet,生成字节码文件,并执行jspinit()方法,然后再生成字节码文件,若不是第一次请求,则会直接访问生成字节码文件,解析执行,jspservice()方法就是处理用户请求的。
jspservice()方法处理客户端的请求,对于每一个请求,JSP引擎创建新的线程来处理,对于多个客户端,引擎会创建多个线程,提高并发量和响应时间。
脚本程序
脚本<%%>
表达式<%=%>
声明<!%%>
表达式<%=%> 不以分号结尾
中文编码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
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等等。
id属性
id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。
scope属性
该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。
jsp:include动作元素
jsp:include动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。
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动作有下面四个属性
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。
jsp:element 、 jsp:attribute、 jsp:body动作元素
jsp:element 、 jsp:attribute、 jsp:body动作元素动态定义XML元素。动态是非常重要的,这就意味着XML元素在编译时是动态生成的而非静态。
jsp:text动作元素
jsp:text动作元素允许在JSP页面和文档中使用写入文本的模板
jsp:text模板数据</jsp:text>
include指令和动作的区别
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
缓冲区 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>