JavaWeb_JSP_语法
来源:互联网 发布:vs2013 for mac 编辑:程序博客网 时间:2024/05/09 11:18
1.JSP工作原理
当浏览器首次请求浏览jsp页面时,服务器先将该jsp页面编译成对应的Servlet,在_jspService()方法中将逐行读取jsp文件数据,并写入新生成的Servlet的response中,最后客户端接收到的是与Servlet对应response的数据。为避免用户首次访问消耗太多时间,可以自己请求一下这个页面,目的是生成与jsp页面对应的servlet。
//index.jsp-->会在tomcat服务器的work目录下生成与之对应的servlet即index_jsppublic final class index_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent {//将逐行读取jsp页面数据,写入response中public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {PageContext pageContext = null;HttpSession session = null;ServletContext application = null;ServletConfig config = null;JspWriter out = null;Object page = this;JspWriter _jspx_out = null;PageContext _jspx_page_context = null;out.write("\r\n");out.write("\r\n");out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");out.write("<html>\r\n");out.write(" <head>\r\n");}}
JSP成分主要有如下四种:注释(Comment)、指令(Directive)、脚本元素(Scripting Element)、动作(Action)。JSP指令用来从整体上控制Servlet的结构;脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;动作用来引入现有的组件或者控制JSP引擎的行为。
2.注释
解释:JSP隐藏注释语句在JSP页面执行的时候会被忽略,不会执行(不会被送到客户端的浏览器中),HTML注释和JSP注释的不同之处在于HTML注释在客户端浏览器能通过查看源文件而被查看到。
语法:<%--comment--%>
3.指令
三种指令:page,include,taglib
语法:<%@ directive attribute=”value”%>
(1).page指令
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
默认导入(多个以逗号隔开)java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*
[ session="true | false" ]
默认值为"true",定义是否在JSP页面使用HTTP的session。如果值为true,则可以使用session对象,相反则不能使用
[ buffer="none | 8kb | sizekb" ]
默认8kb,设置页面是否缓冲,在out在写入数据过程中,数据会写到JSPWriter缓冲区
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
如果设置为false,JSP页面在一个时刻就只能响应一个请求。
[ info="text" ]
[ errorPage="relativeURL" ]
表示如果发生异常错误,网页会被重新指向一个URL页面,前提isErrorPage="true"
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true | false" ]
%>
pageEncoding="UTF-8" //jsp文件以什么方式打开,还需告诉浏览器以什么方式显示
(2).include指令
语法:<%@ include file="relativeURL" %>
解释:<%@ include file="/test.jsp" %> //静态包含,在编译时期包含,因为生成一个Servlet
request.getRequestDispatcher("/test.jsp").include(request, response);//动态包含,运行时包含,生成多个Servlet
(3).taglib指令
功能:使用标签库定义新的自定义标签
语法:<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
jsp配置
<%@ taglib uri="tool" prefix="c" %> //前缀为后面使用的命名空间
web.xml配置
<jsp-config>
<taglib>
<taglib-uri>tool</taglib-uri>
<taglib-location>/tool.tld</taglib-location>
</taglib>
</jsp-config>
tool.tld配置
<uri>tool</uri>
<tag>
<name>for</name>
<tag-class>com.baidu.web.tag.ForTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>count</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
自定义标签详细>>
4.脚本元素
(1).声明
语法:<%! declaration; %>
作用:把声明加入到方法外,从而可以声明变量定义方法。
(2).表达式
语法:<%= %>
作用:显示在浏览器窗口,结果被自动转换成字符型数据,内部实际上执行write方法
实例:<%=new java.util.Date().toLocaleString() %>
(3).脚本小程序
语法:<% Java Code %>
作用:可以包含有效的程序片段,只要是合乎Java本身的标准语法即可。其程序段使用分号作为行语句结束,可以使用隐含的变量。
实例:
<%
String str = request.getRemoteHost();
response.getWriter().write(str);
%>
5.动作
解释:动作组件用于执行一些标准的常用的JSP页面。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。
(1).include动作元素
语法:<jsp:include page="path" flush="true" />
解释:page="path"表示相对路径,或者为相对路径的表达式。flush="true"表示缓冲区满时会被清空,一般使用flush为true,它默认值是false。使用include指令要比使用<jsp:include>动作的响应速度快
(2).forword动作元素
语法:<jsp:forward page={"relativeURL"|"<%= expression %>"}/>
解释:page属性包含的是一个相对URL。
(3).param动作元素
语法:<jsp:param name="参数名1" value="{参数值|<%=表达式 %>}"/>
解释:param动作元素用于传递参数,该动作元素必须和<jsp:include>、<jsp:forward>动作一起使用。
实例:
<jsp:include page="/login.jsp">
<jsp:param name="username" value="zhang" />
<jsp:param name="password" value="123456"/>
</jsp:include>
(4).JavaBean动作元素
1).useBean
语法:<jsp:usebean id="name" scope="page|request|session|application" class="java.lang.Integer">Body</jsp:useBean>
解释:useBean为单例模式设计,只有当第一次实例化Bean时才执行Body部分,如果是利用已有的Bean实例则不执行Body部分。
2).setProperty
语法:<jsp:setProperty property="age" name="person" param="age"/>
解释:name指明对哪个bean实例对象操作
property指明操作哪个属性,如果property的值是"*",匹配的bean属性中,此时应该带相应的参数/index.jsp?name=zhang&age=20
value给的值,支持8种数据类型的转换
param接收地址参数/index.jsp?name=zhang
value和param不能同时使用,但可以使用其中任意一个。如果同时省略value和param,其效果相当于提供一个param且其值等于property的值。
3).getProperty
语法:<jsp:getProperty name="object" property="propertyName"/>
实例:
<jsp:useBean id="p" class="com.baidu.web.Person" scope="page"></jsp:useBean>
<jsp:setProperty property="age" name="p" param="age"/>///index.jsp?name=zhang
<jsp:getProperty property="age" name="p" />
补充:隐式对象out
String name = (String)pageContext.getAttribute("name", PageContext.REQUEST_SCOPE);//可以查找其它与属性
<%=(String)pageContext.findAttribute("name1") %>//自动寻找该属性,范围从小到大直到找到为止
- JavaWeb_JSP_语法
- JavaWeb_JSP_自定义标签
- JavaWeb_jsp_简单计算器(jsp+javaBean模式)
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 语法
- 系统用例和业务用例的区别
- 如何使用Eclipse和GDB对JNI代码进行调试(JAVA和C)
- Flash Builder 命令行构建
- 多么痛的感悟
- 12864绘图程序大集合
- JavaWeb_JSP_语法
- c++ unicode模式下CString 到string的相互转换
- java代理
- 黑马程序员_Java语法及面向对象基础<一>
- android学习笔记之打钩显示输入的密码
- Uploadify的一些参数
- Search in Rotated Sorted Array
- java中把一个字符串中大写字母转换为小写,小写字母转换为大写
- jquery选择器 之 获取父级元素、同级元素、子元素