标签:ons 操作 ora 编译 utf-8 内部类 java类 容器 cep
jsp页面本质上是一个servlet程序。
当我们第一次访问jsp页面的时候。Tomcat服务器会帮我们把jsp页面翻译成为一个java源文件。并且对它进行编译成为.class字节码程序。
打开java源文件会发现它继承了HttpServlet类。
? jsp的page指令可以修改sp页面中一些重要的属性,或者行为。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
language属性
? 表示jsp翻译后是什么语言文件。暂时只支持java。
contentType属性
? 表示jsp返回的数据类型是什么。也是源码中response.setContentType()参数值
pageEncoding 属性
? 表示当前jsp页面文件本身的字符集。
import 属性
? 跟java源代码中一样。用于导包,导类。
*问题:IDEA提示 Cannot resolve class or package ‘utill
<%@ page import="java.util.*" %>
-解决:
修改设置File->Project Structure->Project,把该改的改了
autoFlush属性
? 当out 输出流缓冲区满了之后,是否自动刷新冲级区。默认值是true。
buffer属性
? 设置out缓冲区的大小。默认是8kb
*修改后 :报错500 jsp.error.autoFlush.invalid
errorPage属性:设置当jsp页面运行时出错,自动跳转去的错误页面路径。
设置错误页面为同目录下的errorPage.jsp,发生错误即可跳转到这个页面。
<%@ page language="java" contentType="text/html; charset=UTF-8"
errorPage="/errorPage.jsp"
pageEncoding="UTF-8"%>
isErrorPage属性
? 设置当前sp页面是否是错误信息页面。默认是false。如果是true可以通过源代码获取异常信息。
session属性
? 设置访问当前jsp页面,是否会创建HttpSession对象。默认是true。
extends属性
? 设置jsp翻译出来的java类默认继承谁。
? 格式:<%! ... %>
? 1.声明类属性
<%!
private Integer id;
private String name;
private static Map<String,Object> map;
%>
? 2.声明static静态代码块
<%!
static {
map=new HashMap<String,Object>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
}
%>
? 3.声明类方法
<%!
public int abc() {
return 0;
}
%>
? 4.声明内部类
<%!
public static class A{
private Integer id = 1;
private String name = "aaa";
}
%>
? 表达式脚本的格式是:<%=表达式%>
? 表达式脚本的作用是:在jsp页面上输出数据。
? 表达式脚本的特点:
所有的表达式脚本都会被翻译到_jspService()方法中
表达式脚本都会被翻译成为out.print()输出到页面上
由于表达式脚本翻译的内容都在jspService()方法中,所以jspService()方法中的对象都可以直接使用。
<%=request.getParameter("username") %>
表达式脚本中的表达式不能以分号结束。
1.输出整型
2.输出浮点型
3.输出字符率
4.输出对象
<%=12 %><br>
<%=12.12 %><br>
<%="String" %><br>
<%=map %><br>
代码脚本的格式是:<%java语句%>
代码脚本的作用是:
可以在jsp页面中,编与我们自己需要的功能(写的是java语句)。
代码脚本的特点是:
4、代码脚本还可以和表达式脚本一起组合使用。在jsp页面上输出数据
<%
for(int j=0;j<5;j++){
%>
<%= j %>
<%
}
%>
示例
1.代码脚本--if语句
2.代码脚本----for循环语句
3.翻译后java文件中_jspService方法内的代码都可以写
<%
for(int j=0;j<3;j++){
System.out.println(j);
}
%>
<%
String username=request.getParameter("username");
System.out.println("用户的请求参数是:"+username);
%>
<!--这是html注释-->
? html 注释会被翻译到java源代码中。在jspService方法里,以out.writer输出到客户端。
<%
//单行java注释
/*多行java注释*/
%>
? java 注释会被翻译到java源代码中。
<%--这是jsp注释--%>
? jsp注释可以注掉jsp页面中所有代码。
jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp脚本中可以直接使用这9个对象
名称 | 类型 | 描述 |
---|---|---|
out | javax.servlet.jsp.JspWriter | 用于页面输出 |
request | javax.servlet.http.HttpServletRequest | 得到用户请求信息, |
response | javax.servlet.http.HttpServletResponse | 服务器向客户端的回应信息 |
config | javax.servlet.ServletConfig | 服务器配置,可以取得初始化参数 |
session | javax.servlet.http.HttpSession | 用来保存用户的信息 |
application | javax.servlet.ServletContext | 所有用户的共享信息 |
page | java.lang.Object | 指当前页面转换后的Servlet类的实例 |
pageContext | javax.servlet.jsp.PageContext | JSP的页面容器 |
exception | java.lang.Throwable | 表示JSP页面所发生的异常,在错误页中才起作用 |
四个的数据存取范围不同
pageContext域:当前jsp页面范围
request域:一次请求内
session域:一次会话内(打开浏览器访问服务器,直到关闭该浏览器)
application域:整个web工程范围内(只要web工程不停止,数据都在)
测试用:
<h1>scope页面</h1>
<!-- 存数据 -->
<%
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
%>
<!-- 取数据 -->
pageContext取数据:<%= pageContext.getAttribute("key")%><br>
request取数据:<%= request.getAttribute("key")%><br>
session取数据:<%= session.getAttribute("key")%><br>
application取数据:<%= application.getAttribute("key")%><br>
<!-- 一次转发 -->
<%
request.getRequestDispatcher("/scope2.jsp").forward(request,response);
%>
<!-- 取数据 -->
pageContext取数据:<%= pageContext.getAttribute("key")%><br>
request取数据:<%= request.getAttribute("key")%><br>
session取数据:<%= session.getAttribute("key")%><br>
application取数据:<%= application.getAttribute("key")%><br>
response中表示响应,我们经常用于设置返回给客户端的内容(输出)
out 也是给用户做输出使用的。
当jsp页面中所有代码执行完成后会做以下两个操作:
执行out.flush()操作,会把out缓冲区中的数据追加写入到response缓冲区末尾
会执行response的刷新操作。把全部数据写给客户端。
由于jsp翻译之看,底层源代码都是使用out 来进行输出。所以一般情况下。我们在jsp页面中统一使用out来进行输出。避免打乱页面输出内容的顺序。
示例:不管out写在responese的前面还是后面,最后显示out都会在后面。
<%
out.write("out输出1 <br>");
out.write("out输出2 <br>");
%>
<%
response.getWriter().write("response输出1 <br>");
response.getWriter().write("response输出2 <br>");
%>
<%@ include file=" "%>
? file属性指定要包含的jsp页面的路径
静态包含的特点:
1.静态包含不会翻译被包含的jsp页面。
2.静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置执行输出。
例子:
main.jsp(指向同目录下的footer.jsp)
头<br>
身体<br>
<%@ include file="./footer.jsp"%>
footer.jsp
尾巴
<jsp:include page=""></jsp:include>
page属性指向要包含的jsp页面路径
动态包含的特点:
JspRuntimetibrary.incLude(request,response,"/include/footer.jsp",out,false);
示例:
main.jsp
头<br>
身体<br>
<jsp:include page="./footer.jsp">
<jsp:param name="username" value="hell" />
<jsp:param name="psw" value="root" />
</jsp:include>
footer.jsp
尾巴<br>
<%=request.getParameter("psw")%>
2)请求转发:<jsp:forward page="要转发的资源" />
<jsp:forward page=""></jsp:forward>
示例:
<jsp:forward page="/scope2.jsp"></jsp:forward>
和这个作用一样
<%
request.getRequestDispatcher("/scope2.jsp").forward(request,response);
%>
ServletContextListener 它可以监听 ServletContext对象的创建和销毁。
ServletContext 对象在web工程启动的时候创建,在web工程停止的时候销毁。
监听到创建和销毁之后都会分别调用 ServletContextListener监听器的方法反馈。
示例:
注意要加上注解@WebListener
@WebListener
public class MyServletContextListenerImpl implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext对象被创建了");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext对象被销毁了");
}
}
标签:ons 操作 ora 编译 utf-8 内部类 java类 容器 cep
原文地址:https://www.cnblogs.com/musecho/p/12724623.html