javaee之jsp见解
来源:互联网 发布:linux nvidia驱动卸载 编辑:程序博客网 时间:2024/06/14 06:37
JSP作用: 既能方便地写html代码,也能java代码
Jsp执行过程: jsp文件->翻译->java文件->编译->class文件 (就是一个servlet程序)
Jsp的原理:jsp本质上是一个servlet
Jsp语法
Jsp模板
语法:html代码就是模板
作用:往页面输出静态html
原理:翻译成out.write(xxx)
Jsp表达式
语法:<%=变量%>
作用:往页面输出变量
原理:翻译成out.println(xxx)
Jsp脚本
语法:<% java代码 %>
作用:执行java代码
原理:原封不动地直接翻译到对应位置
注意:jsp脚本和jsp表达式可以混合使用,完成动态输出
Jsp注释
语法: <%-- jsp注释 --%>
作用:注释jsp代码
原理:不会翻译的
html注释:会被翻译和执行的
jsp注释:不会被翻译和执行的
Jsp声明(了解)
语法:<%! 变量或者方法 %>
作用:在jsp页面中声明成员变量和成员方法
原理:直接翻译成jsp的变量和方法
Jsp指令
概念:
Jsp指令是指告诉tomcat服务器如何翻译这个Jsp页面!!!!
基本语法
<%@%>
<%@page 属性1=值1 属性2=值2%>
或者
<%@page属性1=值1%>
<%@page属性2=值2%>
注意:page指令一定是放在jsp的页面最前面
三个指令
1)@page指令:
作用:page指令用于配置jsp页面翻译属性
language="java": 服务器使用什么语言翻译这个jsp文件
import="java.util.*" 导入什么包
jsp默认已经导入的包:
importjavax.servlet.*;
importjavax.servlet.http.*;
importjavax.servlet.jsp.*;
importjava.lang.*
除了以上的包,都需要在jsp显示导入!!!
<%@pageimport="java.util.Date,java.text.*"%>
pageEncoding="UTF-8": 服务器使用什么码表来翻译jsp文件
contentType="text/html;charset=ISO-8859-1" 输出的类型和编码
相当:response.setContentType("text/html;charset=xxxxx")
结论:在myecplise工具开发jsp的时候,只需要设置pageEncoding即可(因为保存文件的码表和contentType的码表都是参考pageEncoding的)
errorPage="":jsp页面出错时跳转到哪个页面处理
isErrorPage="false":指定当前页面是否是错误处理页面。
true:是错误页面,可以获取错误信息
false:不是错误页面,不可以获取错误信息
配置全局的错误页面:500和404
<!-- 配置全局的错误处理页面 -->
<error-page>
<error-code>500</error-code>
<location>/common/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/common/404.html</location>
</error-page>
buffer="8kb":设置jsp页面缓冲区大小
注意:在jsp页面输出内容,尽量使用JspWriter的writer()方法输出,可以使用缓存机制
session="true":是否开启HttpSession功能
isELIgnored="false":是否忽略EL表达式
ture:忽略
false:不忽略
2)@include指令:
作用:用于包含其他页面
<%@includefile="/common/header.jsp" %>
3)@taglib指令:
先不讲,标签的时候讲
作用:用于导入标签库
Jsp内置对象和域对象
Jsp内置对象
Jsp内置对象就是Jsp提前帮助开发者创建好的对象,这些对象方便开发者进行业务开发。
Jsp的哪些内置对象:一共9个
jsp对象 类型
request HttpServletRequest 请求对象,用于获取请求数据
response HttpServletResponse 响应对象,用于设置响应数据
session HttpSession 会话对象,用于保存会话数据
config ServletConfig servlet配置对象,用于读取servlet配置信息
application ServletContext servlet上下文对象,用于管理web应用(4个作用)
exception Throwable 异常对象,用于封装异常信息的
out JspWriter 缓存对象,用于缓存输出数据到页面
page Object 当前翻译后的javae类对象,代表的是当前jsp页面
pageContext PageContext
PageContext对象
1)可以取得其他8个内置对象的
pageContext.getRequest()
pageContext.getResponse()
.......
publicvoid _jspService(){
8个内置对象
PageContextpageContext;
pageContext.setRequest(xxx)
pageContext.setResponse(xxxx);
}
//标签时看到这个方法
publicvoid method(PageContext pageContext){
通过PageContext取得8个,使用8个内置对象
}
2)作为域对象使用
域对象:
ServletContext
HttpServletRequest
HttpSession
PageContext
1)PageContext本身的域对象方法
setAttribute("name",Object) 保存数据到域对象
ObjectgetAttribute("name"); 从域对象取出数据
2)PageContext可以操作其他三个域对象
setAttribute("name",Object,范围常量)
getAttribute("name",范围常量)
3)PageContext可以从四个域对象查询数据
findAttribute("name");
顺序:从小到大:page->request->session-application
范围常量:
REQUEST_SCOPE
SESSSION_SCOPE
APPLICATION_SCOPE
Jsp的四个域对象
共同点:
1)为了共享数据
2)方法:
setAttribute()
getAtribute()
不同点:
PageContext域对象:只能在当前jsp页面中使用
HttpServletRequet域对象:只能在当前请求(1个请求)中使用
HttpSession域对象:只能在当前会话(1个会话)中使用
ServletContext域对象:在当前web应用中使用
PageContext < HttpServletReques t< HttpSession< ServletContext
建议:域对象的使用,能用小范围的使用小范围的
Jsp的最佳实践
servlet: 擅长写java逻辑代码,但不擅长输出html数据
jsp: 擅长输出html数据,但不擅长写java逻辑代码
项目开发:
1)提供输入数据的页面 (jsp)
2)接收用户的数据 (servlet)
3)处理业务逻辑,得到结果数据 (servlet)
使用域对象传输数据
4)显示结果数据 (jsp)
5)跳转页面(转发或重定向) (servlet)
EL表达式
作用
EL表达式用于代替jsp表达式 <%=xxxx%>
为了jsp页面的简洁,使用EL表达式
作用: 输出域对象中的变量
EL表达式建议使用域对象进行数据共享
语法
${变量}
EL可以获取不同类型的数据
1)字符串: ${name}
2)对象: ${student.name} .name 代表调用getName()方法
3)List或数组对象: ${list[下标]}
4)Map集合对象: ${map[key]} 或者 ${map.key}
EL运算
算术运算: + - * /
比较运算: > >= <<= == !=
逻辑运算: && || !
三目运算: (表达式)?true的结果 :false的结果
判空运算: empty
- javaee之jsp见解
- JavaEE之JSP
- JAVAEE之JSP
- javaEE之JSP
- JavaEE之Servlet&JSP篇
- javaee之sax解析和schema约束见解
- javaee之cookie和session的见解和练习
- JavaEE学习笔记之Servlet/JSP(2)
- JavaEE学习笔记之Servlet/JSP(3)
- JavaEE学习笔记之Servlet/JSP(4)
- JavaEE学习笔记之Servlet/JSP(5)
- JavaEE学习笔记之Servlet/JSP(6)
- javaee之jsp和Servlet的练习
- JavaEE学习之路|第一个jsp
- JavaEE学习笔记分享之初识JSP
- JavaEE-JSP
- JSP基本语法见解
- JSP精简见解
- Handle ,HMODULE ,HINSTANCE,HINSTANCE
- Sublime--快捷键
- 如何给变量取个简短且无歧义的名字
- java中Map、List与Set比较
- iOS学习笔记之UITableView(1)
- javaee之jsp见解
- C++ Union
- Android Framework 记录之一
- HDU 5296 Annoying problem(LCA模板+树的dfs序心得)
- win8.1安装驱动出现“文件的哈希值不在指定的目录”的解决办法
- EventBus 3.0 相见恨晚
- linux 下platform设备和驱动注册的先后顺序
- 集成 Tomcat 插件到 Eclipse 的过程
- 深入分析 Java I/O 的工作机制