Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结

Java Web学习,掌握JSP、Servlet、Cookie、Session等内容,使用JSTL进行数据展示完成实际应用。

2.3.1 XML基础

XML的用途、语法规则、语义约束、如何解析XML,以及XPath表达式等内容。
内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
XML是什么?
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第1张图片
XML与HTML的比较:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第2张图片
XML的用途:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置文件是在项目启动过程中,根据配置项加载对应的文件内容,执行相应的代码。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第3张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第4张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第5张图片
XML文档结构:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第6张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第7张图片
ISO8859-1不支持中文。
XML标签书写规则:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第8张图片
1.在这里插入图片描述
3.在这里插入图片描述
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第9张图片
4.Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第10张图片
XML支持五种实体引用;
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第11张图片
CDATA标签:
在这里插入图片描述
5.有序的子元素:
在这里插入图片描述
XML语义约束:
在这里插入图片描述
在这里插入图片描述
规定XML文档中允许出现的节点及数量、属性。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第12张图片

<!ATTLIST>中的employee是标签名,no是属性名,CDATA是子节点类型名称,””代表属性默认值.

在这里插入图片描述
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第13张图片
一般来讲纯文本节点就是没有子节点。
DTD定义节点数量:
在这里插入图片描述
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第14张图片
XML引用DTD文件:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第15张图片
SYSTEM是本地加载dtd文件的意思。
dtd文件建议和xml文件同名。
dtd文件,节点与之后的括号之间需要添加空格,这个是dtd文件的规定,否则无法生效。
XML Schema:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Schema文件以.xsd结尾,第一个声明根节点,包含子节点的时候必须要有 属性带数据类型,
complexType 标签的含义是复杂的节点,包含子节点时必须使用这个标签,sequence 下面的节点必须按顺序排序,minOccurs 属性可以设置标签出现的最少次数,maxOccurs 属性可以设置标签出现的最多次数,标签 simpleType 设置限制(设置数据范围)

<simpleType>
<restriction base="integer">
<minInclusive value="18">minInclusive>
<maxInclusive value="100">maxInclusive>
restriction>
sippleType>
<schema xmlns="http://www.w3.org/2001/XMLSchema">Schema文件加上属性xmlns后边属性xml文件会报错。

常用的数据类型有string integer 在element 标签中设置type属性,
加入标签的属性 attribute>
引入在根节点开头的位置 <hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xx.xsd">xx代表的是引入Schema 文件的名字。


<xx xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xx.xsd">1、xmlns其实是XML Namespace的缩写,表示名称空间.2、xmlns:xsi表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。3、xsi:noNamespaceSchemaLocatio其实是Namespace为http://www.w3.org/2001/XMLSchema-instance里的noNamespaceSchemaLocatio属性.

DOM文档对象模型:
在这里插入图片描述
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第16张图片
DOM4J:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第17张图片
XML DOM与HTML DOM的关系:DOM 是定义了访问 HTML 和 XML 文档的标准:“W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。”W3C DOM 标准被分为 3 个不同的部分:1. 核心 DOM - 针对任何结构化文档的标准模型。 2. XML DOM - 针对 XML 文档的标准模型(XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法)。 3. HTML DOM - 针对 HTML 文档的标准模型(HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法)。
Eclipse中java主方法的快捷生成方法(main然后Alt+”/”).
//在内存中更新DOM树后,要想写入xml文件,需要:
Writer writer=new OutputStreamWriter(new FileOutputStream(file),“UTF-8”);//创建输出流
document.write(writer);
writer.close();关闭输出流
XPath路径表达式:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第18张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第19张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第20张图片
XPath谓语表达式:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第21张图片
是使用“@type”无法选取任何元素,“@”是选择属性的语法,必须配合选择元素的语法来使用,“//”是从匹配选择的当前节点选择文档中的节点,当配合“@”时,“//@type”才能选择所有含type属性的元素。
Jaxen介绍:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第22张图片

Jaxen的下载地址在国外服务器上,不能连接可通过maven.aliyun.com寻找central jaxen-1.1.6.jar最新版下载。
获取第2到第5个员工信息,可以通过position()与and进行匹配。testor.xpath("//employee[position()>1 and position()<6]");获取第2个和第5个员工信息,可以通过position()与|进行匹配。testor.xpath("//employee[position()>1 | position()<6]");获取no属性为’3301’的员工信息,testor.xpath("//employee[no=’3301’]");XPath表达式获取文本用单引号’’而不是双引号””。

总结:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第23张图片

2.3.2 Servlet基础

从Servlet全面进入Java Web开发,介绍Servlet的创建、运行和生命周期。
内容:
在这里插入图片描述
软件结构发展史:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第24张图片
单机时代-桌面应用:eg:word文档
在这里插入图片描述
联机时代(Client-Server模式):eg:qq、微信、支付宝
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第25张图片
互联网时代(Browser-Server模式):浏览器即“特殊的客户端”,打开网页即打开每一个”客户端”。eg:百度搜索引擎、淘宝(本质是浏览器)
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第26张图片
B/S模式执行流程:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第27张图片
在这里插入图片描述
请求与响应:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第28张图片
请求和响应要成对出现。
J2EE是什么?
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第29张图片
J2EE中13个功能模块:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第30张图片
Apache Tomcat:
在这里插入图片描述
J2EE与Tomcat的关系:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第31张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第32张图片
Servlet:
在这里插入图片描述
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第33张图片
WEB服务器主机相当于一台装有web服务器程序的高性能电脑,能动态生成网页;Tomcat相当于’硬件主机’,Servlet相当于服务器程序.
Tomcat安装:
1.jdk 8.0安装,www.oracle.com。2.Tomcat 8.x安装,tomcat.apache.org。Tomcat 与jdk 版本最好对应。
tomcat启动:在cmd命令行切换到tomcat安装目录的bin文件下运行startup.bat(.bat是windows下的可执行文件,.sh是linux下的可执行文件)。启动成功有两种检测方式:1.弹出一个tomcat命令行窗口并末行显示“start Server startup in xxms.”。2.在浏览器输入localhost:8080。localhost本地主机地址,8080是tomcat默认端口号。关闭有3种方式:1.点X弹出的tomcat命令行窗口。2.在弹出的tomcat命令行窗口输出Ctrl+c。3.在原先cmd窗口切换到tomcat安装目录的bin文件下运行shutdown.bat。
在这里插入图片描述
tomcat启动后有乱码是由于cmd窗口和tomcat的编码方式不同造成的,修改一下tomcat的编码方式:步骤:在tomcat->conf->logging.properties文件中,将如下的UTF-8修改为GBK再试试,将:java.util.logging.ConsoleHandler.encoding = UTF-8更改为:java.util.logging.ConsoleHandler.encoding = GBK。
tomcat闪退大多数是,要么端口号被占用了,要么就是jdk没配置好。既然tomcat9可以正常用,可能是之前的tomcat9是启动状态,占用着端口号,建议执行一下tomcat9关闭的命令。
Eclipse J2EE安装与配置:
www.eclipse.org。下载eclipse-jee-2020-03-R-incubation-win32-x86_64解压。2.配置jre:Windows-Preferences-Java-Installed JREs–Add JRE-Standard VM将jdk目录导入。3.配置Tomcat:Windows-Show View-Servers-下面Servers窗口创建一个新服务器-对应tomcat 8.5版本-next
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第34张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第35张图片
默认将web应用程序发布到tomcat所安装的目录下。apache-tomcat-8.5.55\webapps是tomcat默认应用发布目录。
验证eclipse中tomcat配置成功,在ide中选中tomcat服务器然后点小虫子调试出现以下界面(这个信息与cmd中一样),或在浏览器中输入localhost:8080。localhost本地主机地址,8080是tomcat默认端口号。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第36张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第37张图片

<hr/>分割线.

Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第38张图片
浏览器中localhost本地主机地址,8080是tomcat默认端口号,FirstServlet是工程名,/hi是servlet映射的URL名,?后面是参数以及参数值。
解决参数值为中文浏览器显示乱码:-Project-Properties-Resource-Text file encoding设置为utf-8(其他编码格式也行,但要与请求响应的一致),service方法中response.setContentType(“text/html;charset=utf-8”);//设置字符集。
在这里插入图片描述
当一个类继承HttpServlet时,就会变为Servlet类。创建的servlet类都要继承HttpServlet类,要重写service(HttpServletRequest req, HttpServletResponse res)方法。

Servlet在web.xml中的配置方式。配置Servlet的类路径应该是<servlet-class>标签。<servlet-name>配置的是与<servlet-mapping>对应的Servlet名称,<url-pattern>配置的是Servlet的访问路径,<servlet-mapping>配置Servlet的映射关系。

标准Java Web工程结构
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第39张图片
web.xml文件放到/WEB-INF目录下,/WEB-INF/lib文件夹下存放的是web应用依赖的jar文件,/WEB-INF是WEB应用的安全目录,web.xml是部署描述符文件,/WEB-INF/classes用于存放编译后的字节码文件。
web应用目录是整个FirstServlet。2、第三个/WEB应用目录/index.html是指WebContent目录下的index.html。3、项目发布后,webContent就是根目录。
出现404错误,一般是访问路径错误,可排查:1、检查编写的访问路径是否正确,应该是localhost:8080/项目名/映射地址?name=kai。2、查看后台控制台是否有报错信息。如果有解决一下报错问题。3、查看项目的结构。

在工程的WebContent目录下创建index.html,项目部署到tomcat后可在浏览器输入localhost:8080/项目名可直接访问html页面。与servlet映射的URL访问有不同是因为在web.xml中默认配置了<welcome-file-list>welcome-file-list>标签,则表示当路径映射为/时,会从上至下查找所访问的页面是否存在,然后将其映射。如:

Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第40张图片
webapps是用来存放应用程序。当tomcat启动时会去加载webapps目录下的应用程序。
Servlet开发步骤:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第41张图片
Servlet访问方法:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第42张图片
用eclipse时默认的路径是项目名,所以访问时是需要加项目名的,但eclipse中也是可以修改访问路径的(步骤)如下图:选中项目右键 --> 单击Properties --> 选中Web Project Settings --> 在Context root中修改即可。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第43张图片
而idea中如果我们不手动配置路径,就会默认项目路径为/,也就是application Context是/ ,那么就不用写项目名了。可在idea的application Context中设置访问路径,(步骤)如下图:打开 Run --> Edit Configurations --> Deployment,在右侧有个 Application context,Application context 中填写的值会直接加到 localhost:8080 的后面,
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第44张图片
清除Eclipse编译缓存在Eclipse头部菜单栏中的 Project -> Clean…
dopost()、doget()是interlij idea默认的实现方式。Servlet实现方式的不同,只实现service方法是一种形式,实现dopost()、doget()也是一种形式.service()方法能处理get请求和post请求。dopost()只处理post请求,doget()只处理get请求。
请求参数:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第45张图片
Servlet接受请求参数:
在这里插入图片描述
调试模式下启动tomcat服务器可设置断点,程序运行到断点会停止运行。start启动tomcat服务器,访问系统无论任何情况,系统都可执行。
input默认类型是text,可以不定义.
表单form标签中属性action = “http://localhost:8080/项目名(上下文路径)/url-pattern(servlet类的映射地址)” 实现连接html与servlet,(http://localhost:8080)可省略.action中指定的是请求提交的地址,“/”开头代表从Tomcat根目录开始,Eclipse中,项目上下文路径默认是项目名。

response.getWriter().println("\n")方法中的\n不能换行,要用html标签来换行。使用response.getWriter().println("< br/>"),不然response.setContentType(“text/html;charset=utf-8”)是吃素的?

Get与Post请求方法:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第46张图片
表单form默认提交方式是get。
Post方式提交的请求参数可通过浏览器f12调试在Network栏-servlet的映射地址-Headers栏-Form Data可看到。Get请求提交的数据,可以在浏览器调试页面的Query String Parameters中查看。
//service是请求处理的核心方法,无论是get或post都会被service()方法处理。request.getMethod()能够返回提交方法方式的字符串。工作常需分开处理两种请求,一般需重写doGet()和doPost()进行对应处理,很少会重写service()方法通过request.getMethod()判断方式再对应处理。
如果service()方法没被重写,Get和Post请求会经过service()方法进行转发;如果service()方法被重写,是可以接收请求,但是不能转发到doGet和doPost方法中去了。
Get与Post处理方式:
在这里插入图片描述
Get与Post应用场景:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第47张图片
Servlet生命周期:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第48张图片
项目部署到tomcat服务器并启动后(在项目启动时,tomcat会扫描所有的包中的类文件编译后的字节码.class文件,当扫描的某个类中编写了注解,并配置映射了地址,就会将该映射进行加载到Tomcat。会对web.xml中对Servlet进行声明并且绑定了url),servlet被装载;第一次在地址栏请求servlet映射地址时,此时会创建servlet对象、初始化init(ServletConfig)、提供服务service()或doGet()或doPost(),后面修改请求参数servlet只会提供服务,重新加载tomcat服务器(刷新浏览器或修改代码)或关闭tomcat服务器会销毁servlet。即servlet在整个web应用程序中只会创建一个servlet对象。
使用注解简化配置:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第49张图片
在这里插入图片描述
配置Servlet注解中的参数指的是Servlet的映射地址。
编写web.xml的方式是最先开始运用的,进行配置内容,而注解是为了方便使用而产生的。1、首先web.xml方便统一管理,更加清晰一点,可维护性高。2、注解是源代码绑定的,如果某些需求需要改源码,就还是需要使用XML配置方式;要根据具体的需求而选择。
使用注解配置了Servlet以后,web.xml文件中就不可以再配置相同访问的url,否则会报错;但是可以针对同一个Servlet再指定一个不同的访问URL。
启动时加载Servlet:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第50张图片

方式一:在servlet类中重写init()方法,在web.xml配置描述文件中在<servlet>标签中书写<load-on-startup>并设置值,值越小越先加载。

在这里插入图片描述
方式二:在JDK1.5版本后添加了注解简化Web应用程序的配置过程,只需在servlet类中重写init()方法和添加注解。loadOnStartup设置加载顺序,但是必须写urlPatterns=””,不写对应的servlet类不会在启动时加载。
在这里插入图片描述
Eclipse中在web.xml中使用Ctrl+Shift+/ 快捷键出现注释。
设置了启动时加载load on startup,是不是在启动Tomcat时,直接执行图片里Servlet生命周期的前三步。如果不写启动时加载,则在第一次访问对应的servlet的时候才会产生servlet的对象以及执行init方法。

2.3.3 JSP基础

介绍JSP的基本语法和执行流程。
内容:
在这里插入图片描述
Servlet开发的痛点:
Eg:腾讯官网的维护.开发静态页面都不方便,
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第51张图片
Servlet的缺点:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第52张图片
JSP介绍:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第53张图片
JSP的特点:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第54张图片
JSP的运行要求:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第55张图片

在jsp中嵌入java代码块语法<% java代码 %>.

jsp中文乱码将jsp页面编码格式修改为UTF-8,具体如下:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第56张图片
System.out.print是在控制台打印输出内容,而out.print是将内容打印输出到网页上。jsp主要通过页面显示内容,所以使用out.print更合适。
一般前端写好html页面,后端把html改写成jsp页面,并对一些需要显示的数据,以及添加一下逻辑代码等等。所以,jsp页面算是后端来写的,但却不用过多的关注与前端页面的部分相关代码。
JavaScript和JSP的区别如下:1、JSP 是 JAVA 企业应用的一种动态技术用于 java 语言的web应用程序 。javaScript 是一种页面脚本语言,与 java语言没有关系。2、JSP 运行在后台服务器上,本质是Servlet,JSP页面是混合在 HTML 和 java 程序,用来生成动态网页,通常负责调用后台的数据,形成能够根据使用情况的变化的,具有丰富数据交互效果的页面。3、JavaScript 通常是运行在前台,即运行于用户浏览器的,通常不需要服务器的后台支持,混合在 HTML 中的 JavaScript 脚本程序直接被浏览器解释执行。
在JSP容器为每个页面提供了9个Java的内置对象,分别是request、response、out、session、application 、config、pageContext、page和Exception,所以这里可以直接使用out.println() 进行输出,因为JSP中已经内置了这个对象.
静态HTML指的是使用单纯的HTML或者结合CSS制作的包括图片、文字等的只供用户浏览但不包含任何脚本、不含有任何交互功能的网页!就像我们之前的油画案例,就是典型的静态HTML.动态的HTML指的是网页不仅提供给用户浏览,网页本身还有交互功能,存在着在脚本如JAVASCRIPT,常见的例子比如:百度搜索,淘宝页面,可以点击进行一系列的操作来进行交互.
JSP执行过程:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第57张图片
JSP的转译过程:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第58张图片
JSP和Servlet的特点决定他们的使用场景是不一样的,JSP更适用于内容展示,Servlet更适用于逻辑处理。所以在后面学习到的MVC模型中,JSP是作为显示层,用于信息展示,而Servlet是作为控制层,用于控制转发等逻辑处理。
用户访问jsp页面时,这些处理、编译过程会在发出一次Request请求后执行的(只会生成一次servlet对象,后面对jsp文件改变是在servlet对象的基础上进行的)。如图:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第59张图片
out.println() 和 out.write()区别:out.println() 和 out.write()都可以将字符输出到网页中。但也有所不同,println()是JspWriter类中定义的方法,write()则是Writer类中定义的。println()方法可将各种类型的数据转换成字符串的形式输出,而write()方法只能输出字符、字符数组和字符串等与字符相关的数据。如果字符串对象的值为null,println()方法将输出内容为“null”的字符串,而write()方法则是抛出NullPointerException异常。
_jsp.java是JSP文件经过转译后的文件,转译后的文件经过进一步编译生成_jsp.class文件。转译和编译的文件可在tomcat安装目录的work文件夹下查看。
JSP的基本语法:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第60张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第61张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第62张图片

<%%>JSP代码块是可以声明变量的,但不能声明方法。<% %>定义局部变量,每次访问页面的时候变量都要声明;<%!  %>定义成员变量,访问页面的话只声明一次。

Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第63张图片

“=”等价于out.println();方法.<b>标签是html中的标签作用是加粗字体。JSP输出指令<%=%>标签内不要分号。

Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第64张图片
JSP常用处理指令:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第65张图片
JSP中注释的区别:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第66张图片

<%-- 既可以注释jsp中html部分的代码,也可以注释掉<%%>代码。
<%= %>标签内不需要添加分号;<% %>代码脚本中需要语句后面需要增加分号。
1.jsp表达式:<%=表达式%>。 2.脚本<%java代码%>。在jsp页面写的java代码就可以成为脚本。

质数算法:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第67张图片
标签自带默认属性的就可以不加style,例如div有name ,id 等,a 标签有href属性等,table有border 等,这些都可不加style,因为他是标签自带默认属性 ,但是 如果想给 div标签加上一个颜色 那么就要用style ,因为div标签中并没有默认的color属性, 也就是说 只要不是默认属性都需要通过外部样式或者行内样式也就是你写的style来完成。

jsp中<%@ page import="java.io.*,java.util.*" %>,多个包都写到双引号里,中间用逗号分隔。
out.println()方法中的内容就相当于在页面写html代码 ,html代码换行并不能导致页面显示的换行,还得在要换行的代码后加<br>标签.

JSP页面重用:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第68张图片
将其他JSP页面与当前JSP页面合并。最后生成一个当前JSP页面名的源文件。

2.3.4 Servlet与JSP加强

介绍Java Web核心特性,Servlet核心对象和JSP内置对象。
内容:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第69张图片
HTTP请求的结构:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第70张图片
GET请求的请求参数在请求URL中,所以没有请求体。
1.在action访问地址中,以"/“开头,表示项目根目录,会直接从localhost:8080后直接访,–>/request-struc/request,就是直接从localhost:8080后开始拼接,但是这并不是绝对路径。 2、如果没有加”/",则是相对路径,是相对于当前路径进行跳转,–>直接在action中输入request,表示从当前路径跳转到request中,当前路径中有localhost:8080/request-struc等内容,所以直接这样写也能照常访问servlet。3、绝对路径是:在jsp页面中添加以下代码<%String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";%>并且在对应的地址前添加这个basePath的内容,这就是一个绝对路径。
WEB-INF是安全目录,里面的文件是不能直接访问的,建议放到WebContent下面。
巧用请求头开发多端应用:
请求头的User-Agent参数是多端应用最底层的实现。
一般对于项目名的命名规范,建议项目名全部小写。多个单词进行拼接时,建议使用下划线_更加符合规范。
User-Agent得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等;确定当前链接的请求方式可以通过Request Method来查看;链接中传递的参数信息可以通过Query String Parameters来查看;当前网站的缓存信息可以通过Cookie来查看。
响应的结构:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第71张图片
HTTP常见状态码:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第72张图片
状态码404代表无法找到文件,说明当前访问的url存在问题。状态码500代表服务器内部发生了错误,通常是由于代码的bug引起的。
堆栈是计算机为程序分配的内存空间,用来存储数据的。java内存模型有堆内存和栈内存。例如:堆:new 出来的对象或者数组都存放在堆中;Student stu=new Student();此时这个stu对象就放在堆中。栈:在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。

1、1)、在请求一个JSP页面时,Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面.2)、每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。3)、为JSP页面创建的Servlet源文件和class类文件放置在“\work\Catalina\<主机名>\<应用程序名>\”目录中,Tomcat将JSP页面翻译成的Servlet的包名为org.apache.jsp 。删除Catalina中的内容,就是删除了第一次被访问时编译成Servlet的class类文件,也就是清除缓存的一个过程,删除后,重启tomcat,当访问jsp页面时,重新编译这个JSP文件。

ContentType的作用:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第73张图片
Ctrl+F5是清除缓存强制刷新。
Servlet,全称Java Server Applet,本质上就是一个java类。工作原理:1、创建servlet(继承HttpServlet,重写方法)。2、部署servlet(servlet是组件,必须放在容器中,使用容器访问),配置web.xml文件。3、启动服务器,url直接在浏览器地址栏中访问servlet,调用doGet方法。
请求转发与重定向:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第74张图片
在这里插入图片描述
响应重定向需要在servlet映射地址前增加contextPath也就是项目名。因为请求转发是同一个WEB应用程序的内部资源之间的跳转,而重定向的方式是不同WEB应用程序之间的请求,所以重定向需要加工程名,表示要重定向到某一个web应用,也就是某一个项目。重定向路径前的/表示的是服务器根目录,不包括项目名称,所以它要加上项目名。而转发是服务器内部进行,只是在项目内部进行转发,所以它的路径前的/表示的是当前的项目,也就是表示项目根目录。
请求转发是tomcat服务器将浏览器发给前一个servlet类的请求转发给了下一个servlet类,路径不变,是开始访问的映射地址(前一个servlet类的映射地址)。响应重定向是浏览器请求前一个servlet类后浏览器再请求下一个servlet类,路径改变,是最后请求的映射地址(下一个servlet类的映射地址)。
tomcat服务器中可有多个servlet类,每个servlet类在它的生命周期中只会生成一个对象。
请求转发调用的是HttpServletRequest对象中的方法以及转发时浏览器只请求一次服务器,地址栏的url不会发生变化。重定向时,浏览器中的地址栏url会发生变化以及重定向调用的是HttpServletResponse对象中的方法。
请求转发:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第75张图片
开始的servlet会给请求原封不动的发给要转发的servlet。
响应重定向:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第76张图片
开始的servlet会发给浏览器一个特殊的响应,这个响应要求浏览器重新给另一个servlet发送请求。
设置请求自定义属性:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第77张图片
请求自定义属性只有请求转发的响应能获得此属性,重定向的响应不能获得此自定义属性,因为重定向是浏览器发出的两次请求,在第一次请求后开始的servlet类对象会销毁,对应设置的请求自定义属性也随之销毁。
getAttribute表示从request范围取得设置的属性,必须要先在servlet中setAttribute设置属性,才能通过getAttribute来获取参数,设置与获取的为Object对象类型。重定向此属性会随开始的servlet销毁而销毁,所以response.sendRedirect()重定向无法使用getAttribute()与setAttribute。不过可通过getParameter()获取的重定向的参数。getParameter表示接收参数(不能直接获得重定向请求自定义属性),参数为页面提交的参数,包括:表单提交的参数、URL中传的参数等,没有设置参数的方法(setParameter),而且接收参数返回的不是Object,而是String类型。如果是页面传的的参数,需要使用getParameter获取参数,如果是request域setAttribute设置的参数,需要使用getAttribute获取。
Request.setAttribute和request.getAttribute要成对出现。
请求转发与重定向的区别各自的优势如下:1、RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程。所以在转发的前后页面中传递信息,可以使用request的Attribute。2、HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。这种情况下在request中放置Attribute会丢失,所以需要用session或者ServletContext对象。3、综上所述,对于同一个WEB应用程序的内部资源之间的跳转,特别是跳转之前要对请求进行一些前期预处理,并要使用HttpServletRequest.setAttribute方法传递预处理结果,那就更适合使用RequestDispatcher.forward方法。不同WEB应用程序之间的重定向,特别是要重定向到另外一个WEB站点上的资源的情况,都应该使用HttpServletResponse.sendRedirect方法。
请求转发:1.地址栏没有发生变化。2.用户只发起了一次请求。3.请求转发只能转发本服务器以内的资源。4.由于请求是同一个对象,所以可以利用该request做servlet之间数据的传输。重定向:1.地址栏会发生改变。2.用户发起了两次请求。3.重定向可以访问服务器以外的资源。4.重定向由于请求多次的,所以HttpServletRequest不是同一个对象,故不能使用它传递数据。
浏览器Cookie:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第78张图片
默认时效性是cookie随着浏览器关闭而销毁。
Cookie cookie=new Cookie(“num”,“s111”);//实例化cookie对象,cookie的name/value:num/s111,cookie.setMaxAge(60*60);//设置cookie保存在本地的最长时效,单位是秒。
调试快捷键分别说明下图每个按钮的含义:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第79张图片
Session-用户会话:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第80张图片
cookie是将数据保存在客户端,session是将数据保存在服务器端。将数据放在客户机上,会出现数据不安全问题,而且会占用客户机内存。所以没有用cookie请求转发。
request.getRequestDispatcher().forward(request,response)是把request,response转发到了下一个页面,而不是session。不转发也使用的是同一个session对象。用session存储数据时,不用进行转发。最在一个项目中不只可以有一个session,例如,服务器可以为每个浏览器用户创建一个session。可以这样理解。request因为生命周期是一次请求,如果不进行转发的话,它就结束了。而session的生命周期是随着session的创建到session的销毁(默认无操作的清空下20-30分钟中自动销毁,也可以手动销毁,也可以随着服务器的停止而销毁),可以用一个个用户来理解。部署了服务器后,会有很多个用户来进行访问,从每个用户登录,就创建了一个session,直到该用户退出,该session销毁,在登录期间,这个session是一直存在的。如果同时有两个用户登录,就有两个session存在。
session可以设置时效,在一段时间内,不受转发和重定向的影响。只要在一个会话中,就可以获取其中保存的数据,不用担心丢失问题。同一个会话中的session对象都是一个。当一个会话结束后,再次开启会话时Session就不是之前的了。一个会话可简单地理解为:打开浏览器访问一个网站,开始了一个会话,关闭浏览器这个会话就结束了。
第一次访问方法(LoginServlet中的doGet方法)时,在使用request对象调用getSession方法时生成,服务器会为该Session对象生成一个唯一的ID,服务器端响应客户端请求时会在报文头中设置Set-Cookie属性(一次会话结束Cookie中存储的SessionId就没有了,即使给Cookie设置时效。),该属性内容中有一个JSESSIONID即是Session对象的标识,返回后由浏览器进行处理。当再次访问Servlet(IndexServlet中的doGet方法)时,客户端再次发送请求时,浏览器会在报文头中自动追加Cookie属性,该属性将JSESSIONID传到服务器端。在服务器端用request.getSession时会取得SessionId对应的对象而不会重新生成Session。因此是同一个seesion对象。
重开浏览器(相当于新的会话)请求获得首页(第一次是登陆页)会话session的属性,会得到一个新的sessionId,因此获得登录页session设置的属性为null,在一段时间内可通过之前登录页sessionId获得对应的session对象从而获得对应的属性。
Session的原理:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第81张图片
cookie以文本格式存储在浏览器上,存储量有限;session是在服务端,可以无限量存储多个变量并且比cookie更安全,把服务器中产生的会话sessionID存储到客户端浏览器cookie中去。就可以保证客户端和服务端的通信。在客户端存在周期为浏览器关闭时,消失。这样便解决了客户端请求服务端会话不同步问题。
ServletContext:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第82张图片
上下文对象ServletContext 可以理解为一个域,这个域中可以放置一些属性,只是它的生命周期是随着服务器的启动而开始,直到服务器关闭而消失。所以在ServletContext中设置的属性和内容,是可以在服务器中的任何一个页面中都可以访问到,所以说在ServletContext中的属性,是全局生效的。
Java Web三大作用域对象:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第83张图片
1、HttpServletRequest-请求对象:发送请求时被创建,Servlet处理后产生响应并且返回给浏览器后被销毁(用完即扔掉);2、HttpSession-用户会话对象:用户第一次发来请求的时候创建,默认情况下这个session三十分钟内没被访问就被销毁,浏览器关掉只是把存储sessionID的cookie抛弃,而不是销毁服务器端的session;3、ServletContext-Web应用全局对象:Web应用程序被启动时创建,在Web应用程序重启或关闭时销毁;注:考虑程序维护和资源浪费,在开发过程中,我们要优先选用作用域小的对象–HttpServletRequest。Java Web三大作用域对象作用域依次递增。
如果想用java编写CS架构(客户端-服务器端)应用程序,可以使用swing编程工具,Swing是JAVA基础类的一部分。Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。现在很少有人用Java写CS架构的软件了,基本都是用BS(WEB)架构。
Web应用的中文乱码由来:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第84张图片
在这里插入图片描述
在这里插入图片描述
请求过来的字符集是iso-8895-1,而后端用的是utf-8 。所以new String(ename.getBytes(“iso-8895-1”). “utf-8”) 是以iso-8895-1先解码,再用utf-8的编码方式展现。
request.setCharacterEncoding方法用于将请求体中的字符集转换成UTF-8.注意:post请求提交方式才有请求体,get请求提交方式没有请求体(请求参数在URL后面),所以request.setCharacterEncoding方法只对post请求提交方式的请求体中字符集有效。
对与get请求提交方式:
在这里插入图片描述
在这里插入图片描述
在tomcat安装目录-conf-server.xml的第63行Connector标签添加属性URIEncoding=”UTF-8”.在tomcat8(包含)以后版本不管设置与否这个属性默认是UTF-8。
Web应用的中文乱码处理总结:对于请求,post请求提交方式需在doPost方法第一行设置request.setCharacterEncoding(“UTF-8”);get请求提交方式在tomcat8.0版本及以后无需额外设置,若tomcat在8以前则需在tomcat安装目录-conf-server.xml的第63行Connector标签添加属性URIEncoding=”UTF-8”.对于响应,不区分post和get请求提交方式,统一是设置response.setContentType(“text/html;charset=utf-8”)。并注意UTF-8需要大写。有些浏览器不支持小写的。
web.xml常用配置:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第85张图片

<url-pattern>/pattern/*url-pattern>-Servlet通配符*-所有映射地址以ip+context path+/pattern/开头的都会被拦截,也可以用注解配置。request.getRequestURL()方法获得请求URL,返回StringBuffer。toString();方法把返回值StringBuffer转换为String.url.lastIndexOf("/")截取最后一个斜杠出现的位置.通过url.substring()方法截取位置及以后字符串.
Servlet通配符应用频率很高。
全局参数在web.xml中通过<context-param>标签设置,在Servlet中通过ServletContext对象的context.getInitParameter(全局参数名)方法获取全局参数值。

在这里插入图片描述
设置404、500等状态码默认页面:其他程序使用者可能会利用默认tomcat提供的404、500等页面暴露的程序路径实现技术等信息进行不可估影响。

web.xml中通过<error-page>标签指定错误页面及路径,同时手写相应页面代码。

Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第86张图片
JSP九大内置对象:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第87张图片
内置对象的创建和初始化是由容器来完成的。JSP页面中可以直接使用这些内置对象对象。
pageContext是PageContext类的实例,代表当前页面的上下文对象,它封装了相应的方法来访问page,request,session,application范围的变量;可以获得其他的内置对象 。
在这里插入图片描述
将500错误页面由静态html转为动态的jsp,需在jsp中设置当前jsp全局属性isErrorPage=”true”,声明当前jsp文件为专门显示错误的界面。
在这里插入图片描述
获得异常类的名称。
在使用时,需要在page指令下增加isErrorPage=“true”,而且exception内置对象只可以用在错误页面中。
如果页面的处理逻辑中出现了异常,可以在页面中指定一个错误处理页面,错误页面的指定方式。需要在page指令下增加errorPage属性,指定错误处理页面。 isErrorpage:是否指定当前页面为错误页面,isErrorpage默认值为false,若要当前页面为错误页面就设置isErrorPage=true。

JSP页面跳到另一个JSP页面多种方式:1、<a href="success.jsp">跳转到成功页面a>(点击链接跳转)。2、 <div onclick="window.location='success.jsp'">跳转div>(点击跳转)。3、<% request.getRequestDispatcher("/success.jsp").forward(request, response);%> 直接跳转。

Java Web打包与发布:
在Eclipse中将项目以.war文件导出(export),将导出的.war文件复制粘贴到已经配置好的tomcat的webapps文件夹中,运行startup.bat启动tomcat成功,即可在浏览器上访问Java Web项目。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第88张图片
发布网站优化:将URL中http://localhost:8080/contextpath.中端口8080去掉,需将TOMCAT_HOME/conf中的server.xml文件中第63行标签中的属性port=”8080”修改成”80”,URL不用写8080端口,浏览器默认访问80端口;将contextpath上下文路径去掉需将server.xml文件中末尾的标签中的属性path=contextpath上下文路径改成”/”即根路径。属性reloadable="true"是自动加载。若server.xml没有标签可手动添加
双击startup.bat后,那个窗口运行了一下就没了,需配置好环境变量(JAVA_HOME, CATALINA_HOME),CATALINA_HOME是tomcat的主目录
上线通常是在Linux系统中,需要在Linux系统中配置jdk(jre)环境以及tomcat服务器才可以的。

2.3.5 JSTL与EL表达式

介绍Java Web开发中常用的JSP标准标签库JSTL和EL表达式的内容。
内容:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第89张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第90张图片
JSP的缺点是封装和处理数据麻烦。MVC中的控制器一般由Servlet来承担。在JSP+JavaBean模式中,使用JavaBean来封装和处理数据。Servlet的缺点是显示HTML元素的时候很复杂。
EL表达式不能用到HTML页面中,只能在JSP页面中使用。
实例:不使用EL表达式的jsp开发
在这里插入图片描述
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第91张图片
不使用EL表达式的jsp开发,1.需导入未定义的类。2.代码繁杂。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第92张图片
使用EL表达式的jsp开发,不需要导包,代码简单明了。
为什么用EL表达式可以直接调用Student类中的私有变量name和age?EL表达式会根据name去Student类里寻找这个name的getter方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法即getName方法,El表达式就会认为这就是要访问的属性,并返回return的值。不能改成${requestScope.student.getName()} 。
作用域对象:
EL表达式内置四种作用域对象。忽略书写作用域对象时,el则按作用域从小到大一次尝试获取。虽然省略el作用域对象书写方便,但从占用资源和时间的角度上不建议省略el作用域对象。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第93张图片
上图对象作用域范围从小到大递增。
在这里插入图片描述
每一个web应用都有且仅有一个ServletContext 对象,并且ServletContext对象 也是一个作用域。其作用为:1)、作为域对象用来共享数据,使数据在整个应用程序中共享。2)、该对象中保存了当前应用程序相关信息。例如:可以通过getServerInfo();方法获取当前服务器信息,getRealPath(String path);获取资源的真实路径等。
若el作用域范围内没有名为xx的属性,那么将没有任何输出,不会输出null。
EL表达式输出:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第94张图片
el表达式访问私有属性xx,el表达式默认会调用私有属性xx对应的get()方法,如果是其它方法就不可以了,需要自定义标签,没有写get()方法,就访问不到了。
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第95张图片
在这里插入图片描述
在这里插入图片描述
可重写toString()(在set这个属性对应的对象所属的.java文件中重写toString方法)改变Object的toString()输出格式,页面将显示toString()方法的返回值。
空字符串java默认输出null。
null与"“是不一样的,null是对象类型,表示空对象。”“是一个空的字符串。口头上我们都可以称之为“空”。因为空字符串是一个在逻辑上没有意义的值。但是对于Java的String对象来说,null和空字符串的意义不同,空字符串也是一个合理的String对象,不会造成空指针异常,而null则不能直接调用任何方法。比如:String s1=null;String s2=”"; 如果这么写s1.equals(“s”);运行时因为s1为null,所以会报NullPointerException,也就是空指针异常。而s2.equals(“s”);是可以正常执行的。""就代表什么都没有的空白字符串;而null是引用为null,没有创建对象,不能调用方法。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。当Tomcat运行时,会将其编译成Servlet来执行。是因为Servlet展示信息代码复杂,才引入了JSP。由于JSP的目的是为了展示,一般来说,JSP中动态的部分是java代码。JSP中可以完全没有java代码,但没有HTML的就极少了。
EL输出参数值:
在这里插入图片描述

jsp最终都会编译为java代码,在编译时<%%>中的代码,并不会处理,而是直接当做java代码了。

JSTL标签库:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第96张图片
下载JSTL标签库:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第97张图片
在新版本的jsp中已经内置了EL表达式支持包。
1、JSP 是 Servlet 技术的扩展,本质上就是 Servlet 。2、Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP更侧重于前端页面显示,Servlet更侧重于业务逻辑。
安装JSTL标签库:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第98张图片
第一种安装方式所安装的jstl标签库只对当前的web项目有效,第二种方式是安装到Tomcat安装目录的lib目录,也就是tomcat全局组件依赖目录,对配置了tomcat的所有web项目都有效。推荐第一种,因为将jar包放在Tomcat的lib目录里,有些项目需要的jar包版本可能不同,可能会发生冲突。
当/WEB-INF/lib目录下导入jar包,eclipse会自动的将jar包添加至Java Resources/Libraries/Web App Libraries中。
J2EE只制定标准,而具体的实现由第三方厂商来实现。而JAVA WEB中tomcat所提供jar包就是一些标准的实现。eclipse默认会使用tomcat下的jar(第三方)来构建项目,以至于我们可在项目中编写自己的代码。
JSTL的标签库种类:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第99张图片
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第100张图片
在Java或JSP文件中输入Alt+/可出现智能提示。
快捷键Ctrl+f可查找信息并替换。
在jsp中引入jstl标签库:
在这里插入图片描述
prefix属性的值是可以改变的,只不过我们一般习惯用c表示。
URI和URL的区别:URI 是统一资源标识符,而 URL 是统一资源定位符。URL格式为 “协议://IP地址:端口/路径和文件名”如:http://localhost:8080/restful/request。URI可以说是一个紧凑的字符串用来标示抽象或物理资源,URL除去host(域名或者ip)部分的路径,如:/restful/request 。
判断标签:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第101张图片
jstl核心库中多分支判断类似java中的if else if else结构。
jstl核心库中的单分支和多分支的test属性中一般是el表达式(关系判断),值是true/false。
在Java中,单引号 ’ ’ 包裹的值默认是char类型不是String类型,而char类型的值默认是使用Long进行存储。但在EL表达式中,'a’被看做是个字符串。
遍历集合:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第102张图片

<c:forEach>标签中:属性items是数据源(可用el表达式),属性var是迭代变量,属性varStatus是状态变量。varStatus 常用属性值:current: 当前这次迭代的(集合中的)项;index: 当前这次迭代从 0 开始的迭代索引;count: 当前这次迭代从 1 开始的迭代计数;first: 用来表明当前这轮迭代是否为第一次迭代的标志;last: 用来表明当前这轮迭代是否为最后一次迭代的标志。
<c:out>标签中,属性value是原始值,属性default是默认值(将原始值显示为默认值),属性escapeXml是否(true/false)将原始值转译为Xml文件显示(是否显示源码)。

在这里插入图片描述
fmt格式化标签库:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第103张图片
fmt格式化输出标签库中标签fmtDate的属性value是需要被格式的属性值,属性pattern是一组有特殊意义符号组成的格式化方式。日期格式化模式,如下图:
Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结_第104张图片

数字格式化模式,如下图:整数部分两位用’.’分割,小数点后保留两位有效数字。根据pattern决定保留小数位数,它使用的是"4舍6入5奇偶"的算法。1、实现四舍五入,只需要在原有值的基础上再加一个比较小的值即可。例如:<fmt:formatNumber  value="${56.5 + 0.0001}"  pattern="0.000"/>。2、如果不想四舍五入,可以通过将数据的最末尾的数减去一半这样的方法来实现,例如:<fmt:formatNumber  value="${56.5-0.5 + 0.0001}"  pattern="0.000"/>

在这里插入图片描述
员工信息表:
在项目中,修饰属性时,一般对于能使用包装类不会使用基本数据类型,因为基本数据类型有默认值,比如,这个属性使用的是包装类,我们判断它就可使用null来判断它的属性是否存在。所以在项目中建议使用包装类,这是一个编程习惯,当然这里如使用基本数据类型也是没错。
将HTML文件转换JSP文件,打开.html文件在首行添加<%@ page contentType=”text/html;charset=’UTF-8’”%>,关闭.html文件,更改.html文件后缀名为.jsp。
使用ServletContext的对象context全局设置属性也有缺陷,只有当tomcat服务器运行时这些属性可全局获取,当tomcat服务器关闭后这些属性就销毁了。
Java Web基础小结:
java web应用中的jsp页面的初识,jsp文件需要运行在web服务器上,html和htm属于静态页面,可以直接通过浏览器访问。js属于脚本文件,需要嵌入静态页面中,直接通过浏览器访问。
引入系统包的标签是:<%@ page import=“”%>。getParameter()方法的返回值类型是String。response内置对象对应到Servlet中是HttpServletResponse类的对象,它封装了服务器对客户端的响应,然后被送到客户端以响应客户的请求。

你可能感兴趣的:(Java,Web,jsp,servlet,cookie,session,jstl)