浅谈servlet

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值