Jsp入门
Jsp原理图
当jsp页面第一次被请求执行时,tomcat将启动一个线程,该线程将jsp文件转换成java文件,再将.java文件转换成.class文件,然后执行,.class文件响应客户请求
当该jsp页面再次被执行时,将直接执行字节码文件
成员变量与成员方法
<%! %>:在翻译的servlet中定义全局变量与成员方法
<%= %>:jsp输出out.print
<% %>:代码段可以定义变量不能定义方法,实际上是定义在jspservice中的局部每一次请求都会调用,可以写流程控制
Synchronized关键字
为了防止多个用户同时操作一个成员变量,可以对操作该变量的方法加锁
Jsp注释(3种)
1.html注释<!-- -->
会被输出在html源代码中 一般用于html标签
2.Java注释 单行注释多行注释
一般用于jsp实名中java代码
会被翻译在java文件中,不会出现在html代码中
3.jsp注释只能在jsp源代码文件中看到,不会出现java类和html中
<%-- --%>一般用于注释jsp
表单标记
客户使用HTML标记中的表单标记来提交数据。
表单的一般格式为:
<FORM METHOD=GET|POST ACTION="目的页面" NAME="表单名字">
数据提交手段
</FORM>
method 可取值 get或post,区别是:
get 方法提交的信息显示在浏览器的地址栏中。
post 方法提交的信息不会显示在地址栏中。
提交手段有:
文本框、下拉列表、文本区等。
<input>标记
用 input 标记来指定表单中数据的输入方式以及表单的提交键,基本格式为:
<INPUT TYPE=“输入对象的类型” NAME=“名字”>
四大作用域对象
拥有setAttribut和getAttribute的对象统称为作用域对象
Request:一次请求 响应完成作用域 一次请求中
Session:一次回话 回话超时之前都存在
Application(servletContext)服务启动后数据一直保留直动重启和关闭
pageContext:页面上下文,所有页面相关的对象独有它管理和创建它共享的数据只能在当前页面
Page对象
Page对象就是指向当前jsp页面本身,类似类中的this指针他是Java.lang.object类的实例
jsp转译Servlet路径查看tomcat目录\work\Catalina\localhost\上下文名\org\apache\jsp
<%@ page import="java.util.*,java.lang.reflect.*“ %>
<%!
int i=5;
%>
<%
//错误的写法 page.i
Field f=page.getClass().getDeclaredField("i");
f.setAccessible(true);
Object o=f.get(page);
%>
<%=o %>
pageContext对象
pageContext属性默认在当前页面是共享的
pageContext表示一个javax.servlet.jsp.PageContext对象。
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的application的某一属性值
pageContext方法
Session对象
session中的属性在当前session中是共享的
session表示一个请求的javax.servlet.http.HttpSession对象。指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
Session常用方法
application对象
applicaton表示一个javax.servlet.ServletContext对象。
他实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。
服务器的启动和关闭决定了application对象的生命。
application常用方法
config对象
config表示一个javax.servlet.ServletConfig对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。
Config webxml配置
<servlet>
<servlet-name>fileServlet</servlet-name>
<jsp-file>/config/config.jsp</jsp-file>
<init-param>
<param-name>filePath</param-name>
<param-value>c:/test</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>fileServlet</servlet-name>
<url-pattern>/file</url-pattern>
</servlet-mapping>
exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。
如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象。
主页面配置
配置errorPage 出现异常自动进入showError.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8” errorPage=“showError.jsp” %>
假定出现异常
<%
int j=5/0;
%>
showError.jsp
配置显示错误页面 必须配置属性isErrorPage="true“
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true“ %>
出现错误了;错误内容是:<%=exception.getMessage() %><br/>
输出异常信息
<%@page import="java.io.PrintWriter"%>
<%@page import="java.io.ByteArrayOutputStream"%>
<%@page import="java.io.PrintStream"%>
<%
ByteArrayOutputStream baos=new ByteArrayOutputStream();
PrintStream ps=new PrintStream(baos);
exception.printStackTrace(ps); %>
<%=new String(baos.toByteArray()) %>
pageEncoding=”编码” ,jsp在翻译成servlet的java文件,设置java文件编码
contextType=”text/html”;charset=”UTF-8”响应时响应给浏览器编码,没有设置
contentType默认值text/html;charset=”%pageEncoding%”