JSP

JSP=HTML+Java (java server pages):在服务器上运行的页面

注释

1
2
3
<!-- 注释内容 -->    JSP的显示注释

<%-- 注释内容 --%> JSP的隐藏注释

Java的书写

1
2
3
4
5
<%       %>     JSP中插入Java代码(不能写方法)

<%! %> JSP声明:静态块、变量、方法

<%= %> JSP表达式 :向页面输出内容(等价于out.println();)

三个指令

①、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
2
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html:charset=utf-8");

​ 3、响应给客户端二进制数据

​ ServletOutputStream os = response.getOutputStream();

​ 响应格式:resp.setContentType(“image/png”);

​ 4、页面跳转(客户端跳转)

​ resp.sendRedirect(“页面地址”);

​ ①、地址栏和页面改变

​ ②、不能带参数

​ 5、页面刷新