Java教程

JavaWeb

本文主要是介绍JavaWeb,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

XML

XML: eXtensible Markup Language(可扩展标记语言) --> JSON字符串

语法和HTML相似(都是通过标签的形式)
XML的设计宗旨是为了传输数据,而非显示数据
XML的用途
a.配置文件
b.数据的传输
c.数据的存储
XML的语法
语法规则
XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符
只能有一个根标签,所有的其他标签都必须声明在根标签内部
标签必须正确结束,不能交叉嵌套
严格区分大小写
java对XML的操作(增删改查)

1.解析方式
a.dom方式 推荐使用 一次性将文档全部读取到内存,形成DOM树,内存占用较大
b.sax方式 基于事件回调机制,顺序解析,内存占用较小
2.dom方式–>Jdom–>dom4j(第三方)
2.1导包
2.2步骤操作
3.DOM4J的API
org.dom4j.io.SAXReader 解析器
read(InputStream input)
read(Reader input)
org.dom4j.Document 文档对象
getRootElement() 获取根节点
org.dom4j.Element 节点/元素对象
element(String name); 根据标签的名称获取匹配的第一个节点对象
getText() 获取当前节点的文本内容
elementText(String name) 获取指定节点对象的文本值
elements(String name) 获取多个匹配的节点对象
elements() 获取所有的节点对象
org.dom4j.Attribute 属性对象
getValue() 获取属性值

步骤:1.创建解析器
2.关联解析文件
3.从文档对象中获取根节点
4.进行XML相关操作(增删查改)

XPath:
1.导入XPath的jar包(需要在dom4j的基础上)
org.dom4j.Document
selectSingleNode(String str) 查找单个节点
selectNodes(String str) 查找符合要求的多个节点对象

1.创建解析器
2.解析器对象调用XPath方法进行查找

Tomcat

Web环境的搭建
1.服务器的搭建
硬件:配置相当高的电脑(集群) 机房->机架->服务器(主机)
软件:安装到电脑上软件(对外提供服务)
JAVAEE服务器:支持JAVAEE(13个技术规范)
JAVAWEB服务器:支持部分JAVAEE的技术规范
2.Tomcat服务器
安装:解压安装(要求解压的目录无中文无空格)
部署项目:将项目复制到webapps文件夹内
启动服务器:去bin目录下钊startup.bat
客户端(浏览器):访问到服务器
3.Tomcat的目录结构
bin : tomcat的命令文件(启动.关闭服务器)
conf : tomcat的配置文件(配置tomcat的编码格式,端口号:8080,tomcat的用户)
lib : tomcat实现JAVAEE技术规范的jar包
logs :tomcat运行过程中产生的日志文件
temp :tomcat的临时文件目录
webapps : tomcat的项目部署目录
work : tomcat工作时的目录
4.tomcat是需要JAVA_HOME的环境变量
tomcat不可以重复启动(端口号被占用)
如何修改tomcat端口号 : conf-server.xml
5.将tomcat集成到idea中
6.如何创建web工程(模块) java->static web->java web

web
src:java代码
web:静态资源(网页.图片.音频.视频.CSS代码.JS代码)
WEB-INF
lib : 方第三方的jar包
web.xml :web项目的核心配置文件
7.启动服务器并测试
8.idea中继承的tomcat和本地的tomcat有什么关联

idea每创建一个web项目,就需要选择一次服务器,idea就会创建一个tomcat的镜像
镜像创建在 : C:\用户\具体的用户名.IntelliJIdea2019.2\system\tomcat
项目部署在:./Tomcat_7_0_79_web0821_2\conf\Catalina\localhost\web05_1_war_exploded.xml
在此xml中配置一个路径,这个路径下的项目就是当前镜像部署的项目
D:\workspace\web\out\artifacts\web_war_exploded
将web项目中的web下的内容都拷贝到指定目录下+java代码会编译号class文件,放在WEB-INF中的classes目录下
可以看到我部署的项目在哪里

Servlet

1.Tomcat镜像的设置
1.1 服务器的名称(建议每个镜像服务器都设置一个独有的名称)
1.2 设置默认使用的浏览器
1.3 本地的项目名和部署再服务器上的项目名(可以设置名字)
1.4 镜像服务器的端口号设置
1.5 热部署(点击刷新)
update resources 更新资源(web下的内容)
update classes and resources 更新java(src下的内容)和资源(web下的内容)
2.Servlet :Server Applet -> 服务器端的一个小程序
角色 对应的是 服务员
3.Servlet的创建步骤
3.1创建一个普通类
3.2实现一个接口Servlet
3.3实现接口中的所有抽象方法
3.4添加配置信息,设置当当前Servlet的访问路径

在web.xml中添加配置信息  
      <servlet> 
          <servlet-name>设置Servlet的名字</servlet-name> 
          <servlet-class>全类名</servlet-class>   
      </servlet> 
       <servlet-mapping>  
       		<servlet-name>和servlet名字一样</servlet-nmae>  
       		<url-patern>/设置Servlet的访问路径</url-pattern> 
       </servlet-mapping>

4.客户端的设置
click
5.程序运行的流程
5.1用户点击超链接 访问当前项目下的Servlet路径
5.2去到web.xml中找一个url-pattern的值是Servlet路径的
5.3得到当前servlet-mapping中servlet-name的值
5.4就会去servlet标签中找一个servlet-name的值
5.5就会得到当前servlet标签中serlvet-class的值
5.6创建这个servlet的对象,并且默认调用其中的方法(init/service方法)
6.Servlet的生命周期
6.1Servlet接口中的抽象方法
Servlet对象创建时执行的:
public void init(ServletConfig servletConfig);
获得ServletConfig对象
public ServletConfig getServletConfig();
处理客户端的请求和给客户端响应
public void service(ServletRequest servletRequest, ServletResponse servletResponse)
获得Servlet的信息
public String getServletInfo()
Servlet对象销毁的时候执行
public void destroy()
6.2 和生命周期有关的方法有三个:init service destroy
6.3 生命周期描述
在第一次访问当前Servlet的时候创建其对象(Tomcat中的Servlet容器)
调用init方法进行初始化,在调用service方法处理请求
在后续的访问中,直接调用service方法
直到服务器关闭,servlet对象会销毁,执行destroy()方法
关闭服务器:直接点叉号(来不及执行destroy方法) shutdown.bat(推荐使用)

7.Servlet的第二种创建方式
7.1新建一个java类
7.2继承HttpServlet
7.3重写 doGet()和doPost()
7.4需要配置Servlet的访问路径
8.HttpServlet和Servlet接口的关系
Servlet
GenericServlet 对init/destory/getServletConfig都做了实现 service方法没实现
HttpServlet 对请求方式的分辨

Http协议

1.HTTP协议 超文本传输协议
它是一种详细规定了浏览器和万维网服务器之间相互通信的规则
客户端和服务器端是通过报文的形式去进行数据传输(HTTP协议就是规定报文的格式)
客户端–>服务器 请求报文
服务器–>客户端 响应报文
2.请求报文
请求首行
POST / web06_1/RegisterServlet HTTP/1.1
请求头
将浏览器和本次请求的信息发送给服务器
User-Agent:客户端的产品信息(浏览器的信息)
Referer:当前页面的上一个页面路径(请求来源) 防盗链
空行
请求体 用户传给服务器的数据
get请求时没有请求体
pose请求的请求主体: username=abc&passwoed=aaaa
get请求
form标签中的method设置为get
超链接
网址栏直接输入访问路径
js跳转
post请求
form标签中的method设置为post
3.响应报文
响应首行
HTTP/1.1 200 OK
响应状态码:200 正常
响应头 服务器的来源
Server:Apache-Coyote/1.1
Content-Length:0
Date:Sat, 10 Oct 2020 06:50:53 GMT
空行
响应体
服务器端传过来的页面 转发和重定向的
4.响应状态码
200:成功
404:服务器访问到了,但是没找到指定的资源(访问路径错误)
500:资源找到了,但是服务器内部出现错误(有错误产生)
302:重定向
304:从缓存中拿数据(浏览器有缓存)

域对象

1.ServletConfig
1.1 ServletConfig接口封装了Servlet配置信息,一个Servlet对应唯一的一个ServletConfig对象
1.2功能
a.获得servlet的名称
b.获得全局上下文的对象ServletContext
c.获得Servlet的初始化参数
2.ServletContext
2.1全局上下文ServletContext对象
每个Web应用程序都创建一个唯一对应的ServletContext对象(一个Web项目只有一个ServletContext对象)
2.2功能
a.获得上下文路径(部署在服务器上的项目名)
b.获取虚拟路径所映射的本地真实路径(根据相对路径获取绝对路径)
c.获得全局初始化参数
d.全局作用域对象,可以保存数据,范围是整个项目
3.HttpServletRequst
3.1该接口是ServletRequest接口的子接口,封装了HTTP请求的相关信息
3.2处理客户端的请求
3.3功能
a.获取请求参数
b.获取url地址参数
c.获取请求头信息
d.请求的转发
f.向请求域中保存数据,保存数据的范围是本次交互,一次请求+一次响应=一次交互
4.HttpServletResponse
4.1该接口是ServletResponse接口的子接口,封装了服务器针对HTTP响应的相关信息
4.2功能
a.通过PrintWriter写回数据(谁请求我,我就输出给谁)
b.设置响应头
c.重定向(帮助我们实现页面的跳转)

5.请求的转发和重定向

                      发起者               请求域共享数据        浏览器感知

转发: reqeust对象 可以 感知不到
重定向: response对象 不可以 能感知

请求域的范围:一次交互(一次请求+一次响应)

6.乱码
6.1请求乱码
6.1.1get请求:
在tomcat配置文件中添加配置信息 URIEncoding=“UTF-8”
6.1.2post请求:
request.setCharacterEncoding(“UTF-8”)
6.2响应乱码
response.setHeader(“Content-Type”,“text/html;chharset=utf-8”);
response.setContentType(“text/html;charset=utf-8”);
7.web项目的路径问题
所有的位置如果不加 / 代表的就是相对路径

/ 代码绝对路径
服务器:当前项目下
web.xml 必须加/ (要求所有的servlet都从当前项目下可以找到)
Servlet中转发操作 /可加可不加
浏览器: 当前服务器下 localhost:80
静态资源(html)
Servlet中的重定向

以后用加/的情况比较多
在当前网页中对所有的请求路径统一加前缀

Cookie、Session

1.Cookie
1.为什么要学Cookie?
因为HTTP协议是无状态的,所以导致服务器不知道第二次请求和第一次请求是否来自同一个客户端
2.Cookie就可以解决上述问题
Cookie就是服务器通过响应保存在浏览器的一段信息(会员卡)一旦保存上之后,
浏览器每次在访问服务器时都会携带这个信息
3.Cookie的用途
电商购物车
保持用户登录状态
2.Cookie的工作原理
客户端第一次访问服务器时,服务器在响应的时候回给客户端一个信息(JSESSIONID==xxxxxxx)
当前客户端在第二次以及后面每一次访问服务器时,都会携带这个信息
服务器就可以获取这个信息,就可以完成一些事情
3.Cookie的使用
Cookie的创建
a.新建Cookie对象
Cookie cookie = new Cookie(“key”,“value”);
b.通过响应传给客户端
response.addCookie(cookie);
Cookie的获取
Cookie[] cookies = request.getCookies();
Cookie的修改
1.新建一个Cookie对象,Key值设置为一样的
Cookie cookie = new Cookie(“key”,“value”); //新的值会覆盖久的值
2.找到需要修改的Cookie然后设置值
设置Cookie的存储时间
Cookie默认存储范围是当前会话(瞬时Cookie)
cookie.setMaxAge(int age);
int 0 立即删除
int >0 设置时间 单位是秒
int <0 和不设置是一样的 默认瞬时Cookie
设置有效路径
设置Cookie在请求的时候,那个请求路径携带该Cookie
cookie.setPath(/上下文路径/访问路径);
2.session -->HttpSession
概述:
服务器端的会话控制
客户端第一次发送请求到服务器,服务器给响应的时候,先创建一个session对象,会给客户端带一个信息(JSESIONID)
第n次访问服务器时,服务器就会去获得JSESSIONID,然后根据JSESSIONID可以找到session对象
使用:
创建和获取
session对象的创建:自动创建
在客户端第一次获取session的时候创建
getSession()的原理
a.先去寻找JSESSIONID
b.可以找到JSESSIONID,根据JSESSIONID去寻找session对象
可以找到session对象则返回
找不到session对象会新建一个HttoSession对象,JSESSIONID也会创建,返回
c.找不到JSESSIONID,会新建一个HttpSession对象,JSESSIONID也会创建,返回
session数据的存取
session.setAttribute(String key,String value)
session.getAttribute(String kay)
session对象的有效时间
tomcat-conf-web.xml配置session的空闲时间是30分钟(不建议在此修改)
setMaxInactiveInterval(int seconds):空闲时间
session对象的释放
a.达到空闲时间
b.强制失效(注销)
c.服务器关闭
session的钝化和活化
钝化:将session对象和session对象中的数据序列化磁盘(数据需要支持序列化)
活化:反序列化
idea需要开启session的钝化和活化

Filter、Listener

过滤器(Filter)
1.生活中 口罩,净水器,安检 设计模式:责任链模式
2.Filter是一个接口, 编写风格和Servlet类相似
Filter是Java Web三大组件之一(Servlet,Filter,Listener)
Filter是服务器专门用来过滤请求,拦截响应的
3.过滤器的应用
检查用户访问权限
设置请求响应编码,解决乱码问题
4.API

Filter接口
Init()
doFilter()   真正过滤的方法
destory()
FilterConfig接口
getFilterName() 获取Filter的名字
getServletContext() 获取ServletContext对象 (application)
getInitParameter(String) 获取Filter的初始化参数
getInitParameterNames() 获取所有初始化参数的名字
FilterChain接口
doFilter()  放行的(找下一个过滤器,如果没有了,就直接到目标)

5.新建过滤器
1.
新建一个类
2.
实现Filter接口
3.
实现接口中所有的抽象方法
4.
在web.xml中配置(过滤器的过滤路径)

6.练习
在访问order/order.jsp的时候,做一个登录状态的检测
如果处于登录状态就直接访问
如果不处于登录状态就跳转至登录页面
7.Filter的生命周期
Class类:类的类
A.在启动服务器时会对所有过滤器对象完成初始化操作
B.在发送请求的时候,如果符合过滤器的过滤路径,就会执行doFilter方法
C.在web应用卸载的时候,销毁过滤器对象
8.Filter的访问路径
精确配置
范围配置
后缀配置
9.多个过滤器会过滤相同的情况
如何设置过滤器的顺序(filter-mapping的上下顺序决定的)
10.过滤器的创建方式
实现Filter接口
init和destory
doFilter中需要的参数对象进行强转
11.FilterConfig
12.设置过滤器的工作状态
默认过滤器只过滤请求
如何设置过滤器过滤转发
在filter-mapping标签中设置

监听器
汽车的防盗警报
Web三大组件之一
js学的事件
监听器监听的事件是什么?
三大域对象:request,session,application
对象的创建和销毁
域对象中值的添加,修改,删除
一种类型的对象添加,移除到session中
创建监听器的步骤
新建一个类
实现接口
实现抽象方法
Web.xml中配置监听器的信息
监听对象的创建和销毁
ServletContext
实现的接口是 ServletContextListener
服务器启动 ServletContext对象创建,web卸载 ServletContext对象销毁
HttpSession
实现的接口是 HttpSessionListener
第一次获取session对象时创建,强制销毁或自动销毁
ServletRequest
实现的接口是 ServletRequestListener
一次请求一次监听
监听域对象中属性的变化
ServletContext
实现的接口是 ServletContextAttributeListener
HttpSession
实现的接口是 HttpSessionAttributeListener
ServletRequest
实现的接口是 ServletRequestAttributeListener
监听User对象在session中的添加和移除
实现的接口 HttpSessionBindingListener
User类去实现接口
不需要再web.xml配置

Ajax、JSON

Asynchronous Javascript And XML
异步请求 --> 网页应用的网页开发技术(浏览器不会刷新页面)
用户名的重复验证
搜索提示
地图
同步请求 --> 之前所有的请求都属于同步请求(浏览器会刷新页面)
Location.href="";原理:js给浏览器设置路径,请求还是浏览器发送
异步的Javascript And XML
请求时通过js发送,响应就会响应给js,需要传递数据(XML–>json)
XML功能:配置文件,异步系统传输数据的媒介,保存数据
XML被JSON字符串取代
AJAX初体验

$.ajax({
type:请求方式,
url:请求路径,
data:请求参数,
dataType:返回时的数据的类型,
success:回调函数(请求成功调用的函数)
});
$.get(url,data,function(),dataType);
$.post(url,data,function(),dataType);
$.getJSON(url,data,function());

JSON字符串:格式固定的字符串
JSON在java中的使用
gson.toJson(Object object) 对象转JSON字符串

gson.fromJson(String s , Object.class) JSON字符串转对象

gson.fromJson(String s , New TypeToken) JSON字符串转集合

文件的上传
1. 文件上传的步骤
a. 导入jar包
b. 准备网页
准备一个表单 1. 提交方式必须是post方法 2. 增加一个属性
enctype=“multipart/form-data”
c. 编写Servlet

这篇关于JavaWeb的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!