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、页面刷新