http要求掌握一些头信息
超文本传输协议
协议:规定数据的格式
浏览器往服务器发送----请求
服务器往浏览器回写----响应
请求:
组成部分:
请求行,请求头,请求体
格式:请求方式 访问的资源 协议/版本
例如:get和post
get会把参数放在url的后面,post不会
get参数的大小有限制(不超过1kb),post请求却没有限制
get请求没有请求体post请求有请求体,请求参数 在请求体中
请求行:请求信息的第一行
请求头:请求信息的第二行到空行结束
格式:key/value(value可以有多个值)
常见的请求头:
Accept:text/html,image/bmp ---支持数据类型 text/html/css text/javascript 大类型/小类型 mime类型
Accept-charset:ISO-8859-1--字符集(它不支持中文)
Accept=Language:zh-cn ---语言环境
Host:www.itcast.cn:80 --访问主机
If-Modified-Since:Tue,11 Jul 2000 18:23:51 GMT --缓存文件的最后修改时间
Referer:http://www.itcast.co/index.jsp --来自哪个页面,防盗链
请求体:空行一下的内容
响应:
组成部分:
响应行 响应头 响应体
响应行:响应信息的第一行
格式:协议/版本 状态码 状态码说明
例如:Http/1.1 200 OK
状态码:
200正常响应成功
302重定向
304读缓存
404用户操作资源不存在
500:服务器内部异常
响应头:从响应信息的第二行到 空行结束
响应体:空行一下的内容
完成登陆案例:
需求:
在界面上输入用户名和 密码,提交到服务器上,服务器拿着用户名和 密码去数据库中查找有无此用户
若有用户,则提示登陆成功
若没有这个用户 就提示用户密码步匹配
技术分析:
表单
servlet
请求(request)
响应(response)
表单:
收集用户数据
所有的字段要提交到服务器必须有name属性
提交的的字段要想提交到服务器必须有name属性
提交的地址 action
请求方式:post
servlet:
动态的web开发技术,本质就是一个类,运行在服务器的一个java小程序
处理业务逻辑,生成动态的 web内容
回写内容:
response
response.getWriter().print("success");
处理响应数据 中文乱码
res.setContentType("text/html;charset=utf-8");//建议放在方法中的第一行
步骤分析:
1:先有数据 库和表
create database serverlet;
use serverlet;
create table user(
id int primary key auto_increment,
username varchar(20),
password varchar(20),
email varchar(20),
name varchar(20),
sex varchar(10),
birthday date,
hobby varchar(50)
);
insert into user values (null,'tom','123','tom@126.com','com','1','1988-01-01',null);
2:创建工程
3:复制页面
修改login.html
给用户名和密码添加name属性
action="http//localhost/serverlet/login"
添加method属性
method="post"
4:导入jar包
驱动 dbutils c3p0
5:导入工具类
datasourceUtils
c3p0-config.xml
6创建servlet(LoginServlet:路径/login)
接受用户名和密码
调用service层(UserService)完成登陆操作
提示信息
7:UserService
login(username,password)
调用dao
8:dao
通过用户名和密码查询数据库
serlvet总结:
servlet的体系结构(了解):
Servlet:接口
|
GenericSeervlet:抽象类
|
HttpServlet:抽象类
|
自定义servlet
servlet常用方法:
void init(SerevletConfig config):初始化
void service(ServletRequest request,ServletResponse response):服务,处理业务逻辑
void destroy()销毁
ServletConfig getServletConfig():获取当前servlet的配置对象
GenericServlet常用方法:
除了service方法 没有显示,其他都实现了
空参的Init()若我们自己想堆servlet进行初始化操作重写这个init()方法就可以了
HttpServlet常用的方法:
service 做了实现,把参数强 转,调用重载的servlet方法
重载的servlet方法获取请求的方式,根据请求方式的不同调用响应的doxx()方法
doGet和doPost方法
Servlet的 生命周期
/***
* 初始化方法
* 执行者 :服务器
* 执行次数:一次
* 执行时机:默认第一次访问的时候
*/
void init(ServletConfig arg0)
/***
* 服务
* 执行者 :服务器
* 执行次数:请求一次执行一次
* 执行时机:请求来的时候
*/
service(ServletRequest arg0, ServletResponse arg1)
/***
* 销毁
* 执行者 :服务器
* 执行次数:只执行一次
* 执行时机:当 Servlet被移除的时候或者服务器正常关闭 的时候
*/
void destroy()
///////////////
Servlet是单实例多线程
默认第一次访问的时候,服务器创建servlrt,并调用init实现初始化操作,并调用一次Service方法
每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务 逻辑
当servlet被移除的时候服务器正常关闭的时候,服务器调用servlet的destroy()方法实现销毁操作
///////////////
在servlet标签有一个子标签 load-on-startup
作用:用来修改servlet的初始化时机
取值:正整数 值越大优先级越低
////////////////
当我们的配置文件里面没有指定配置的话,会查找tomcat的we.xml
若请求我们自己的项目处理不了,tomcat的默认的servlet的会帮我们处理信息
路径的写法:
相对路径:
当前路径: ./或者什么都不写
上一级路径 ../
绝对路径(我们使用)
带主机的协议的绝对路径(访问站外资源)
http://www.ithe.com/xxx
http:/localhost:80/day/hello
不带主机和协议的绝对路径
/day/hello(经常使用)
/////////////
案例:当我们登陆失败的时候,提示”用户密码不匹配“,3秒后跳转到登陆页面
技术分析:
定时刷新
常见的响应头--refresh
响应头格式
refresh:秒数;url=跳转的路径
设置响应头:
response.setHeader(String key,String value);设置字符串形式的响应头
response.addHeader(String key,String value);追加响应头,如果之前设置过响应头,就追加,没有,就设置
设置定时刷新:
response.setHeadr("refresh“,”3;url=/day/login.html);
////////////////////
案例:统计登陆用户成功的总人数
需求:
在一个用户登陆成功后,获取之前登陆成功的总人次,讲次数+1在访问另一个servlet的时候,显示登陆的总人次
技术分析:
ServletContext
上下文(全局管理者)
常用的方法:
setAttribute(String key,Objeect value);//设置 值
Object getAttribute(String key);//获取值
removeAttribute(String key);//移除值
步骤分析:
1:在项目启动的时候,初始化dengue的次数
在loginservlet的init方法中获取全局管理者,将值初始化为0,放在servletcontext上
登陆成功后,在loginservlet中获取全局管理者,获取登陆成功的总次数
然后讲次数+1然后将值设置回去
当访问showServlet的时候,获取全局管理者,获取登陆成功的总次数,然后在页面上打印出来就可以了
null不能赋值给int可以Integer
ServletConfig:(了解)
servlet配置对象
作用:
1:获取当前的servelt的名称
2:获取当前servelt的初始化参数
3:获取全局管理者
方法:
String getServletName():获取 当前的Servlet名称(web.xml配置的servlet-name)
String getInitParameterNames():获取所有的参数名称
Enumeration getInitParameterNames():获取所有的参数名称
初始化参数是放在web.xml文件
servlet标签 下子标签init-param
getServletContext()获取全局管理者
ServletContext:理解
一个项目的引用(全局管理者)
一个 项目的引用,代表了当前项目
当前项目启动的时候,服务器为每个web项目创建一个ServletContext对象
当项目移除的时候或者服务器关闭的时候ServletContext销毁
作用:
1:获取全局的初始化参数
2:共享资源
3:获取文件资源
4:其他操作
获取ServletContext:
方式一:了解
getServletConfig().getServletContext()
方式二:
getServletContext
常用方法:
1:
String getInitParameterNames():获取所有的参数名称
Enumeration getInitParameterNames():获取所有的参数名称
再根标签下有一个context-param子标签 用来存放初始化参数
<context-param>
<param-name>encoding</param-name>
<param-value>utf-8<param-value>
</context-param>
2.xxxArribute
3:String getRealPath(String path):获取文件部署到tomcat上 的真实路径(带tomcat路径)
getResourceAsStream(String path):以流的方式返回一个文件
4:获取文件的mime类型 大类型/小类型
String getMimeType(String 文件的名称)
域对象
servletcontext
当成map集合
常用方法:
xxAttribute()
servletecontext创建和销毁
存放:
共享资源
获取文件的路径:存放再classes目录下
通过类加载器获取文件:
类.class.getClassLoader().getResource("").getPath()
浅谈servlet
最新推荐文章于 2021-08-07 00:51:51 发布