xml:
可扩展的标签语言
标签可以自定义
作用:配置文件
声明 首行顶格写
元素
<xxx></xxx>
属性
<xxx attr="value">
注释
<!--注释内容-->
CDATA 原样输出
<![CDATA[...]]>
XML的解析:
sax:逐行解析,只能查询
dom:一次性将文档加载到内存,形成一棵树,可以进行crud操作
通过dom4j进行查询操作
1、导入jar包
2、获取document
Document doc = new SAXReader().read(文件路径);
3、获取根结点
Element root = doc.getRootElement();
4、获取其他结点
获取属性节点
String value = root.attributeValue("属性名");
获取所有的子元素
List<Element> list = root.elements();
获取子元素的文本节点
String text = ele.elementText("子元素名称")
扩展:xpath 需要引入jar包
api:
List<Element> selectNodes("表达式")
Element selectSingleNode("表达式")
xml约束:
作用:规定文档中可以出现哪些元素和属性及他们出现的顺序
分类:
DTD和SCHEMA
DTD:一个xml文档中只能有一个dtd约束
只要在文档上面看到<!DOCTYPE>说明使用的是dtd约束
正则 *任意次 ?0次或1次 +至少1次 ,顺序 |或 ()分组
SCHEMA:一个xml文档中可以出现多个schema约束
只要在xml文档中看到xmlns
tomcat
web:网页或者资源
资源有动态web资源和静态web资源
动态的web开发技术:servlet和jsp等等
静态的web开发技术:html css 等
tomcat
启动:在bin/startup.bat
退出:bin/shutdown.bat
修改端口号:conf/server.xml
存放项目:webapps/
web项目目录
myweb
|
|---html css 图片
|
|---WEB-INF(特点:浏览器直接访问不到,通过java程序可以)
| |
| |---lib
| |---classes
| |---web.xml(核心配置文件)
发布方式:
方式1:将项目放在webapps下
改server.xml
改catlina
访问路径
http://主机:端口号/项目名称/资源路径
http:
超文本传输协议
规定数据的格式
浏览器往服务器发送---请求
服务器往浏览器回显---响应
请求(request):
组成部分:
请求行 请求头 请求体
格式:请求方式 访问的资源 协议/版本
请求行:请求信息的第一行
例如:GET /xxx/1.html HTTP/1.1
get会把参数放在url的后面 post不会
get参数大小有限制 post没有
get请求没有请求体 post请求有请求体 请求参数妨碍请求体中
1.0的http协议在请求一次产生一个链接 回来之后就断开 1.1会保留一段时间
请求头:请求信息的第二行到空行结束
格式:key/value(value可以是多个值)
常见的请求头
Accept:text/html,image/* --支持数据类型 text/html text/css text/javascript 大类型/小类型 mime类型
Accept-Charset:ISO-8859-1 --字符集
Accpet-Encoding:gzip --支持压缩
Accpet-Language:zh-cn --语言环境
Host:www.baidu.com -- 访问主机
If-Modified-Since:Tue,12 Jul 2018 10:10:11 GMT --缓存文件的最后修改时间
Referer:https://developer.mozilla.org/zh-CN/docs/Web/HTTP --来自哪个网页、防盗链
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0 -- 浏览器内核 MSIE是ie
Cookie
Connection:close/keep alive --连接状态
Date:Fri, 03 Aug 2018 01:41:42 GMT --时间
请求体:空行以下的内容
只有post才有请求体 get请求参数 http://xxx?username=to&password=11
响应(response):
组成部分:
响应行 响应头 响应体
响应行:响应信息的第一行
格式:协议/版本 状态码 状态码说明
例如:HTTP/1.1 200 OK
状态码:
200 正常响应成功
302 重定向
304 读缓存
404 用户操作资源不存在
500 服务器内部异常
响应头:从响应信息的第二行到空行结束
格式:key/value(value可以是多个值)
常见的头
Location:xxx --跳转方向 和302一起使用的
Server:apache tomcat --服务器型号 不安全 一般不显示
Content-Encoding:gzip --数据压缩
Conent-Length:80 --数据长度
Contetn-Language:zh-cn --语言环境
Content-Type:text/html;charset=GB2312 --数据类型
Last-Modified:Tue,12 Jul 2018 10:10:11 GMT --最后修改时间
Refresh:1;url=xxx --定时刷新
Content-Dispositiom:attachment:filename=xx.zip --下载
Set-Cookie:SS=SS=SS_A;path=/search
Expires:-1 --缓存
Cache-Control:no-cache --缓存
Pragma:no-cache --缓存
Connection:keep-alive --连接
响应体:空行以下的内容
页面上展示的内容
登录
在页面上输入用户名和密码,提交到服务器上,服务器用用户名和密码在数据库中查找有无此用户
若有,则提示登录成功
若无,则提示用户名密码不匹配
需要:
表单
servlet
请求(request)
响应(response)
表单:
收集用户数据
所有的字段要提交到服务器 需要有name属性
提交的地址 action
请求方式:post
需要把tomcat的jar包整合进来(用config build path中的add library)
servlet
动态的web开发技术,本质上就是一个类,运行在服务器端的一个java小程序
处理业务逻辑(代码),生成动态的web资源
编写一个servlet步骤
1、编写一个类
a、继承HttpServlet
b、重新doGet或者doPost方法
2、编写配置文件(web-inf/web.xml)
a、注册servlet
b、绑定路径
3、访问
http://主机:端口号/项目名/路径
接受参数:key=value
String value = request.getParameter("key")
例如: http://localhost/day02/hello?username=to
request.getParameter("username")可以获取到to
回写内容
response
response.getWriter().print("success");
处理响应数据的中文乱码
resp.setContentType("text/html;charset=utf-8");//建议放在第一行
1、有数据库和表
2、创建工程
3、复制页面
给用户名和密码添加name属性
修改表单的action属性
action="http://localhost/day02/login"
添加method属性
methos="post"
4、导入jar包
驱动 dbutils c3p0
5、导入工具类和配置文件
datasourceUtils
c3p0-config.xml(修改所需的)
6、创建servlet(LoginServlet:路径 /login)
接受用户名和密码
调用service层(UserService)完成登录操作
提示信息
7、UserService
login(username,password)
调用dao
8、dao
通过用户名和密码查询数据库
servlet的体系机构
servlet:接口
GenericServlet:抽象类
HttpServlet:抽象类
自定义servlet
servlet常用方法
void init(ServletConfig config):初始化
void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
void destory():销毁
ServletConfig getServletConfig():获取当前servlet的配置对象
String getServletInfo();返回关于servlet的信息 比如作者,版本和版权
GenericServlet常用方法
除了service方法没有实现,其他都实现了
空参的init()若我们自己想要对servlet进行初始化操作,重写这个init()方法即可
HttpServlet常用方法
service做了实现,把参数强转,调用了重载的service方法
重载的service方法获取请求的方式,根据请求方式的不同调用响应doXxx()方法
doGet和doPost方法
servlet 生命周期
void init(ServletConfig config):初始化
* 初始化方法
* 执行者:服务器
* 执行次数:一次
* 执行时机:默认第一次执行
* 不用调用super.init(config) 直接重写这个空参就可以完成在初始化的时候 添加所需
void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
* 服务
* 执行者:服务器
* 执行次数:请求一次执行一次
* 执行时机:请求来的时候
void destory():销毁
* 服务
* 执行者:服务器
* 执行次数:一次
* 执行时机:当servlet被移除的时候或者服务器正常关闭的时候(重新载入)
servlet是单实例多线程
默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作,并调用一次service方法
每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑
当servlet被移除的时候或者服务器正常关闭的时候,服务器调用servlet的destory方法实现销毁操作
servlet的url-pattern与名字最相近的servlet响应
后缀名匹配 *.jsp
load-on-startup
用来修改servlet的初始化时机
取值:正整数 值越大 优先级越低
当配置文件里面没有指定配置的话会查找tomcat的web.xml
若请求我们自己的项目处理不了,tomcat的默认的servlet会帮我们处理
路径的写法
相对路径
当前路径 ./或者 什么都不写
上一级路径 ../
绝对路径
带主机和协议的绝对路径(站外资源)
http://www.xxx.com/xxx
http://localhost:8080/day02/xxx
不带主机和协议的绝对路径
/day02/xxx 已经连接了主机带上了协议所以可以不用加
当登录失败,提示"用户名和密码不匹配",3秒后跳转到登录页面
定时刷新
常见的响应头-refresh
响应头格式:
refresh:秒数;url=跳转的路径
设置响应头
response.setHeader(String key,String value);设置字符串形式的响应头
response.addHeader(String key,String value);追加响应头,若之前设置过这个,则追加,若没有设置过,则设置
设置定时刷新:
response.setHeader("refresh","3;url=/day02/login.html");
步骤分析:
登录失败之后,修改业务逻辑
打印之后添加一个头信息即可
统计登录成功的总人次
在一个用户登录成功之后,获取之前登录成功总人次,将次数加一。在访问另一个servlet的时候,显示登录成功的总人次
ServletContext
ServletContext(application)
上下文(全局管理者|域对象)
常用的方法:
setAttribute(String key,Object value);//设置值
Object getAttribute(String key);//获取值
removeAttribute(String key);//移除值
获取全局管理者
getServletContext();
1、在项目启动的时候,初始化登录次数
在loginServlet的init()方法中获取全局管理者,将值初始化为0,放入servletContext上
2、登录成功后,在loginServlet中获取全局管理者,获取登录成功的总次数
3、然后将次数+1,然后将值设置后去
4、当访问showServlet的时候,获取全局管理者,获取登录成功的总次数,然后在页面上调用出来即可
还需要在web.xml中加入<load-on-startup>2</load-on-startup>
修改web project settings 不然访问的是括号内的内容
ServletConfig
servlet配置对象
作用
1、获取当前servlet的名称
2、获取当前servlet的初始化参数
3、获取全局管理者
方法
String getServletName():获取当前servlet的名称(web.xml配置的servlet-name)
String getInitParameter(String key):通过名称获取指定的参数值
Enumeration getInitParameterNames() :获取所有的参数名称
初始化参数是放在web.xml文件
servlet标签下 init-param
getServletContext():获取全局管理者
servletConfig是由服务器创建的,在创建servlet的同时也创建,通过servlet的init(ServletConfig config)将config对象传递给servlet,
由servlet的getServletConfig方法获取
ServletContext
上下文(全局管理者)
一个项目的引用,代表了当前项目,
当项目启动的时候,服务器为每一个web项目创建一个servletContext对象
当项目被移除或者服务器关闭的时候这个对象销毁
作用:
1、获取全局的初始参数
2、共享资源(xxxAttribute)
3、获取文件资源
4、其他操作
获取servletContext
方式1
getServletConfig().getServletContext
方式2(因为实现了servletConfig所以有getServletContext这个方法)
getServletContext
常用方法
1、tring getInitParameter(String key):通过名称获取指定的参数值
Enumeration getInitParameterNames() :获取所有的参数名称
在根标签下有一个context-param子标签 用来存放初始化参数
<context-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</context-param>
2、xxxAttribute
3、String getRealPath(String path);获取文件部署到tomcat上的真实路径(带tomcat路径)
getRealPath(""):G:\apache-tomcat-8.5.27\webapps\day02\
InputStream getResourceAsStream(String path); 以流的形式返回一个文件 用于下载
4、获取文件的mime类型 大类型/小类型
String getMimeType(String 文件名称)
servletContext.getMimeType("1.air")
在tomcat\conf\web.xml有针对后缀名返回mime
域对象
servletContext
当成map集合
常用方法
xxxAttribute()
servletContext创建和销毁
当项目启动的时候,服务器为每一个web项目创建一个servletContext对象
当项目被移除或者服务器关闭的时候这个对象销毁
存放
共享的数据
获取文件的路径
通过类加载器获取文件:文件放在classes目录下
类.class.getClassLoader().getResource("1.txt").getPath(); WEB-INF/classes 可以通过../../到WebContent目录
http:超文本传输协议
请求
响应
servlet
本质上就是一个类,运行在服务器端的一个java小程序,生成动态web内容处理业务逻辑
编写servlet
1、编写一个类 继承HttpServlet 重写了doGet()或者doPost()
2、编写配置文件
注册servlet
<servlet>
<servlet-name>给servlet起个名字 名字唯一</servlet-name>
<servlet-class>servlet的全限定名</servlet-class>
</servlet>
绑定路径
<servlet-mapping>
<servlet-name>给servlet起个名字 名字唯一</servlet-name>
<url-pattern>访问路径 目前都是以"/"开始</url-pattern>
</servlet-mapping>
3、访问路径
http://主机:端口号/项目名/路径
servlet的体系机构
所有的servlet应该继承HttpServlet 简介的实现了Servlet接口
HttpServlet中的方法
service(ServletRequest request,ServletResponse response):将两个参数强转,调用了重载service方法
protected void service(HttpServletRequest req, HttpServletResponse resp) 获取请求的方式,根据请求方式的不同调用响应doXxx
doGet 和doPost用来处理业务逻辑
servlet的生命周期
url-pattern的配置
完全匹配>目录匹配>后缀名匹配
load-on-startup:修改servlet的初始时机
若自己处理不了请求,服务器上有一个默认的servlet会帮助处理
servletConfig
servlet的配置对象
获取servlet的名称 初始化参数
获取全局管理者 getServletContext()
servletContext
上下文
作用:
1、获取全局的初始参数
getInitParameter("key")
2、共享资源(域对象)
xxxAttribute()
3、获取文件资源
getRealPath("/1.txt") 获取项目发布到服务器上位置的根目录
getResourceAsStream("/1.txt"):以流的形式返回一个文件
4、获取文件mime类型
getMimeType(文件名称)
域对象
servletContext
创建
销毁
servlet(访问路径 登录次数)
最新推荐文章于 2020-09-27 18:40:35 发布
787

被折叠的 条评论
为什么被折叠?



