JSP
JSP=HTML+Java (java server pages):在服务器上运行的页面
注释
1  | <!-- 注释内容 --> JSP的显示注释  | 
Java的书写
1  | <% %> JSP中插入Java代码(不能写方法)  | 
三个指令
①、page指令 <%@ page 属性=”值” … %>
	属性1:import=”java.util., java.io.“;  导包
	属性2:pageEncoding  告诉JSP引擎要翻译的文件使用的编码方式
	属性3:contentType 声明当前文件的类型及编码方式 ,等同于(服务器响应给用户的数据的编码方式)-response.setContentType(“text/html;charset=utf-8”);
	属性4:errorPage:如果页面有错误,则跳转到指定资源(页面维护中….)
			errorPage=”/uri”;  “/“:绝对路径,代表当前应用下的目录;””:不写/,表示相对路径
	属性5:isErrorPage:是否创建throwable对象,默认false
②、include指令 静态包含(其它页面)
	1)、静态包含(指令) <%@ include file=”页面路径” %>
		在编译时,把两个文件合并起来一起编译
		多用:一般处理页面的header、footer部分
	2)、动态包含(动作指令)  <jsp:include page=”页面路径”>
		不会合并,当代码执行到包含时,才包含另一个文件
③、taglib
 JSTL:标签标签库的使用
六个动作指令
①、动态包含(动作指令)
 <jsp:include page=”页面路径”>
 不会合并,当代码执行到包含时,才包含另一个文件
②、请求转发 jsp:forward 服务器跳转:
 地址栏不变,页面内容跳转,可以带参数(客户端跳转:地址栏及页面内容都跳转,不能带参数)
③、设置请求参数 jsp:param
④、创建一个对象 jsp:useBean
⑤、给指定的对象属性赋值 jsp:setProperty
⑥、取出指定对象的属性值 jsp:getProperty
九个内置对象
1、request(HttpServletRequest):
 该对象封装了1个请求,客户端的所有信息
 全部封装在该对象中,那么我们就可以定义该对象中的方法,来获取到我们想要的信息
2、response(HttpServletResponse):
 代表服务器响应客户端
3、session(HttpSession):
 代表一次会话,客户端与服务器的一次会话(连接)
		会话开始:与服务器建立连接
		会话结束:关闭浏览器
4、application(javax.servlet.ServletContext):
 代表整个web项目
5、config(ServletConfig):
 代表JSP的配置信息
6、pageContext(javax.servlet.jsp.PageContext):
 代表页面的上下文
7、exception(java.lang.Throwable):
 如果设置了错误页面,则会跳转到指定的错误页面
 可以通过exception.getMessage()获取错误信息
8、out(JspWriter):
 服务器响应页面的输出内容
9、page:
 代表当前JSP页面,类似于java中的this关键字
注:每次请求服务器,服务器所做的事情:
 1.启动单独的线程
 2.使用I/O流读取用户的请求数据
 3.从请求数据中解析参数
 4.处理用户的请求
 5.生成响应的数据
 6.使用I/O流向客户端响应数据
四个存值对象的范围
1、application:
 存储的值,在整个web项目过程中都有效
2、session:
 仅对一次会话有效,同一次会话中,所有页面和servlet中都可以获取值;但新会话就没有值了
3、request:
 仅对1次会话有效,必须结合服务器跳转才可以传值
	//1.给request中存储值
	request.setAttribute(“req_key”, “req_val”);
	
	//2-1.服务器跳转:①地址栏不变,页面内容改变   ②可以把request范围内的值传递出去
	request.getRequestDispatcher(“B.jsp”).forward(request, response);
	
	//2-2.客户端跳转:①、地址栏和页面内容都改变   ②不能传值
	response.sendRedirect(“../C.jsp”);
 B页面 超链接属于客户端跳转
4、page:
 仅对当前页面有效
request
 1、获取文本框中的属性名及值
 2、获取请求属性及参数
 3、处理客户端请求服务器的编码方式
 req.setCharacterEncoding(“utf-8”);
 4、页面跳转
 req.getRequestDispatcher(“页面地址”).forward(req,resp);
 ①、地址栏不变、页面改变
 ②、可以带参数
response
 1、向客户端响应文本—代替out
 PrintWrite out = response.getWriter();
 out.println(“文本内容”);
 out.flush;
 2、设置服务器响应客户端的编码方式
1  | resp.setCharacterEncoding("utf-8");  | 
 3、响应给客户端二进制数据
 ServletOutputStream os = response.getOutputStream();
 响应格式:resp.setContentType(“image/png”);
 4、页面跳转(客户端跳转)
 resp.sendRedirect(“页面地址”);
 ①、地址栏和页面改变
 ②、不能带参数
 5、页面刷新
