jsp编程
jsp的实质和工作原理:
jsp (全称:Java Server Pages) 是一种动态网页开发技术,是由类似html元素的jsp标签写成的servlet.
jsp文件是以 .jsp 为后缀的文件。当你写了一个jsp文件(filename.jsp),在浏览器*问的时候(注意是访问的时候,不是启动tomcat服务器的时候),web服务器识别到这是一个jsp网页的请求,然后从硬盘加载jsp文件后将它转换成servlet:name_jsp.java 文件,并编译成servlet可执行类,web服务器调用servlet引擎,将数据传送到浏览器。(这里还有细节,比如 jsp 引擎与servlet引擎以及服务器之间是如何配合的,为什么修改jsp后不需要重启服务器?)
jsp文件的结构解析
jsp 实际上就是servlet, 在jsp页面中的所有元素,除了jsp标签,指令以及jsp语法定义插入的代码,还有上面提到的普通注释和隐藏注释,其他内容都被编译转换成String类型,通过out.println();写到了浏览器。(不会说...等待改进)
jsp语法
脚本程序:脚本程序可以包含任意量的Java语句、变量、方法或表达式。
<% 这里的java代码,将会被解析到name_jsp.java 中的,_jspService方法 %>
<%! 这里的Java代码,将会被解析到name_jsp类的成员变量和成员方法 %>
<%= 这里的代码将会被直接放到 _jspService方法中的out.println()语句中 %>
注释:jsp中有三种注释方式:
1). HTML注释: <!-- 这里是注释的内容 -->
这种注释会被编译成java.lang.String类型,写到浏览器中成为html;
2). 普通注释: <%// 我是注释,不可换行! %>, <%/* 我是注释,可以换行 */%>, <%/**我是注释,可以换行 */%>
这种注释会写到Java文件中,<% %> 这个符号用来在jsp文件中嵌入Java代码用的,百分号中间可以书写Java代码,所以java代码中的注释方式
和原则都可以在百分号之间来用。
和原则都可以在百分号之间来用。
3). 隐藏注释: <%-- 我是注释,想换行就换吧! --%>
这个注释仅仅存在于当前的jsp文件,当jsp文件被转换成java文件的时候,这个注释就会被丢弃。
九大内置对象:
request : HttpServletRequest类的实例
response : HttpServletResponse类的实例
out : PrintWriter类的实例,用于把结果输出至网页上
session : HttpSession类的实例
application : ServletContext类的实例,与应用上下文有关
config : ServletConfig类的实例
pageContext : PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page : 类似于Java类中的this关键字
Exception : Exception类的对象,代表发生错误的JSP页面中对应的异常对象
jsp指令
jsp动作元素
jsp:include 在页面被请求的时候引入一个文件。
jsp:useBean 寻找或者实例化一个JavaBean。
jsp:useBean 寻找或者实例化一个JavaBean。
jsp:setProperty 设置JavaBean的属性。
jsp:getProperty 输出某个JavaBean的属性。
jsp:forward 把请求转到一个新的页面。
jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element 定义动态XML元素
jsp:attribute 设置动态定义的XML元素属性。
jsp:body 在JSP页面和文档中使用写入文本的模板
EL表达式:
全称为:Expression language,在jsp中显示后台数据十分方便;
1). 语法:${scope.var}
el表达式的书写形式为:${},大括号中 scope 表示要取出的数据所在的对象或范围(可以是el中隐含的是一个对象,如果不声明scope则默认只从四个作用域中查询),var表示要取出的数据,或变量。如果变量有值,则显示值,否则,显示 空串;比如你在后台向request中设置了一个属性setAttribute("u_ser",user),user是一个实体类,然后通过请求转发跳转到jsp页面,可以通过el表达式进行获取:
${requestScope.u_ser.username} // username 是user的一个属性
这行代码相当于:
<% User user = (User)request.getAttribute("u_ser",user); String username = user.getUsername(); %> <%= username==null? "" : username%>
EL中隐含对象
pageScope: page 作用域
requestScope: request 作用域
sessionScope: session 作用域
applicationScope: application 作用域
param: Request 对象的参数,字符串
paramValues: Request对象的参数,字符串集合
header: HTTP 信息头,字符串
headerValues: HTTP 信息头,字符串集合
initParam: 上下文初始化参数
cookie: Cookie值
pageContext: 当前页面的pageContext
requestScope: request 作用域
sessionScope: session 作用域
applicationScope: application 作用域
param: Request 对象的参数,字符串
paramValues: Request对象的参数,字符串集合
header: HTTP 信息头,字符串
headerValues: HTTP 信息头,字符串集合
initParam: 上下文初始化参数
cookie: Cookie值
pageContext: 当前页面的pageContext
EL中的基础操作符
-------------------------------------------下面的部分有待整理
标签
base标签: 用于设置jsp页面中的所有的相对路径的基础参考路径
: