9.25 [JavaWeb] JSP

JSP

JSP——Java Server Page:Java服务端页面,在html页面中编写Java代码的页面。

绝大多数时候,我们希望响应的不是简简单单一句话,而是一个页面,我们用PrintWriter对象去写一个页面也是可以的,但缺点太明显。

所以直接返回一个页面,并且能够写Java代码就能大大简化我们的开发,这就是——JSP。
JSP是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写。

JSP中9个隐式对象

隐式对象(或隐含变量):在JSP当中我们没有手动声明创建,但实际存在,可以直接使用的对象。
①request:客户端的请求信息被封装在request对象中,通过它才能了解用户的需求,然后做出响应

②response:包含了响应客户请求的有关信息,但在JSP中使用很少

③pageContext:页面的上下文,是PageContext的一个对象,可以从该对象中获取到其他8个隐含对象,也可以获取到当前页面的其他信息

④session:指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,知道客户端与服务器断开连接为止

⑤application:代表当前web应用,是ServletContext对象,能实现用户间数据的共享,可存放全局变量,它开始于服务器的启动,直到服务器的关闭,在此期间,此对象一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命周期

⑥config:当前JSP对应的Servlet的ServletConfig对象,可获取该Servlet的初始化参数(开发时基本不用),需要通过映射的地址才可以。

⑦out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上

⑧page:page对象就是指向当前JSP页面本身,类型为Object,有点类似于类中的this,几乎不使用

⑨exception:该对象是一个例外对象,只有页面是一个错误页面,即isErrorPage设置为true的时候(默认为false)才能使用,否则无法编译。

注意:JSP可以放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中

jsp 中的三大指令:

指令的格式:<%@>
page
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

contentType=“text/html 表示jsp中的类型 charset=UTF-8” 设置其编码格式 language=“java” 语言 errorPage=“welcome.jsp” 页面发生异常所有加载的页面
<%@ page import=“java.text.SimpleDateFormat” %>导包
include 指令: 引入其它jsp文件(基本上都是公共的部分)
<%@ include file=“head.jsp”%> 静态引入:适合引用纯html代码 先加载 再编译
taglib 指令一般引用第三方的表达式比如jstl表达式 fmt 格式化时间的

域对象

pageContext:属性的作用范围仅限于当前servlet或JSP页面

request:属性的作用范围仅限于同一个请求(考虑页面转发的情况)

session:属性的作用范围限于一次会话(浏览器打开直到关闭,称为一次会话,前提是在此期间会话没有失效),数据是用户独立的。(后面细讲)。

application:属性的作用范围限于当前WEB应用,是范围最大的属性作用范围,只要在一处设置属性,在其他各处的JSP或Servlet中都可以获取,直到服务器关闭。数据所有用户共享。

EL表达式

EL能够极大的简化我们的开发

EL 全名为 Expression Language,它原本是 JSTL 1.0 为方便存取数据所自定义的语言。当时 EL只能在JSTL标签中使用。到了JSP2.0 之后,EL已经正式纳入成为标准规范之一。

EL 隐含对象

如果我们在request和application中设置了同名属性怎么办?
与范围有关的隐含对象
applicationScope
sessionScope
requestScope
pageScope

JSTL

JavaServer Pages Standard Tag Library (1.1 ) ,它的中文名称为 JSP 标准标签函数库。JSTL 是一个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出、流程控制、循环。

jsp 中动态标签库

<%–动态包含某个界面–%>
<jsp:include page=“welcome.jsp”></jsp:include> 包含
<jsp:forward page=“welcome.jsp”></jsp:forward> 转发的标签库

时间的插件: My97 DatePicker

pageContext.request.contextPathweb<<<fm:formatDatepattern="yyyy"value="{pageContext.request.contextPath} 表示获取的项目web目录 <%--对时间进行格式化的标签库--%> <%@taglib prefix="fm" uri="http://java.sun.com/jsp/jstl/fmt" %> <fm:formatDate pattern="yyyy" value="{register.createTime}"></fm:formatDate>
pattern=“yyyy” 表示格式化时间的格式 value是需要格式化时间的值

使用的步骤:
1.下载其文件
2.新建js 把 下载的文件 与jquery 放入
3.在界面 引入js文件 首先必须引入jquery.js文件
4. 在需要引入的地方 οnclick=“WdatePicker({dateFmt:‘yyyy-MM-dd HH:mm:ss’})”

上传: ServletFileUpload 上传文件的核心的类

上传的基本步骤 1.导入第三方的jar包 加入依赖 上传的注意点:method=“post” enctype=“multipart/form-data” 必须是这两点
2.首页需要创建一个上传文件目录(文件夹)
3.检验提交的格式是否合法 ServletFileUpload.isMultipartContent(req); 为true 表示合法
4.实例化这个上传文件的核心类 ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
5.得到所有form 表单的fileItme 集合
6 得到每一个fileItem 然后判断每一个FileItem的类型 fileItem.isFormField() 如果是true 表示是文本类型,也就是不是文件
7.获取文件的名称,构建一个文件对象
8.构建一个完整的路径,写入到服务器 fileItem.write(f);
注意点: 获取其文本的值: fileItem.getString(“UTF-8”) 数据库保存是保存的图片的路径(一般相对路径或者是文件都可以)
9.25 [JavaWeb] JSP
9.25 [JavaWeb] JSP
9.25 [JavaWeb] JSP