servlet

Servlet

  • 将每次的几个案例进行复习,自己手打;

eclipse小技巧

  • 常用的view界面不是Project Exploere是Package Explorer;
  • 缺少某个界面的时候可以在windows-show view中打开;

http

  • Web的访问机制为请求响应机制,因此先介绍请求响应机制;
  • http:要求:掌握一些头信息
  • http:超文本传输协议
    • 协议:规定数据的格式;
    • 1、浏览器往服务器发送—请求
    • 2、服务器往浏览器回写—响应

请求(request):

  • 组成部分:请求行 请求头 请求体
    • 格式:请求方式—-访问资源—-协议/版本
    • GET /day0801/1.html HTTP/1.1
    • 请求行:请求信息的第一行
      • 请求方式:get和post
      • get会把参数放在url的后面 post不会
      • get参数大小有限制,post请求却没有限制
      • get请求没有请求体;post请求有请求体,请求参数放在请求体中
      • get请求没有post请求安全;
      • 请求的版本我们都为1.1;
    • 请求头:请求信息的第二行到结束
      • 格式:key-value(value可以有多个值)
      • 常见的请求头:
        • Accept: text/html,image/*–支持数据类型text/html text/css text/javascript 大类型/小类型,mime类型
        • Accept-Charset: ISO-8859-1 –字符集
        • Accept-Encoding: gzip –支持压缩
        • Accept-Language:zh-cn –语言环境
        • Host: www.itcast.cn:80 –访问主机
        • If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT –缓存文件的最后修改时间
        • Referer: http://www.itcast.com/index.jsp –来自哪个页面、防盗链
        • Cookie
        • 。。。。
      • 掌握的请求头:
        • Referer User-Agent Cookie If-Modified-Since
    • 请求体:空行以下的内容

响应(response)

  • 组成部分:响应行 响应头 响应体
  • 响应行:响应信息的第一行
    • 格式:协议/版本 状态码 状态码说明
    • 例如:HTTP/1.1 200 OK
    • 状态码:
      • 200 正常响应成功
      • 302 重定向
      • 304 读缓存
      • 404 用户操作资源不存在
      • 500 服务器内部异常,代码出问题了;
  • 响应头:从响应信息的第二行到空行结束
    • 格式:key/value(value可以是多个值)
    • 常见的头:
      • Location: http://www.it315.org/index.jsp –跳转方向 和302一起使用的
      • Server:apache tomcat –服务器型号:不安全已经不显示了;
      • Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT –最后修改时间,若有缓存,则不修改;
      • Refresh: 1;url=http://www.it315.org –定时刷新
      • Content-Disposition: attachment; filename=aaa.zip –下载
      • Set-Cookie:SS=Q0=5Lb_nQ; path=/search★
      • Expires: -1 –缓存
      • Cache-Control: no-cache –缓存
      • Pragma: no-cache –缓存
      • Connection: Keep-Alive –连接
    • 掌握的头信息
      • Content-Type Location Last-Modified Refresh Content-Disposition Set-Cookie
  • 响应体:空行以下的内容
    • 页面上展示的内容,就是heml的内容;

Servlet

  • 去找找怎么理解tomcat底层上是怎么实现的接收请求,和完成响应;
  • 完成登陆案例(顺序)
    • 表单
    • servlet
    • 请求(request)
    • 响应(response)
  • 表单:手机用户数据,提交字段教导服务器必须有那么属性,提交的地址action,请求方式:post
  • servlet:动态的web开发技术,本质就是一个类,运行在服务器端的一个java小程序,
    • 处理业务逻辑,生成动态web内容
  • 编写servlet步骤:
    • 1、编写一个类
      • a、继承HttpServlet
      • b、重写doGet或者doPost方法
    • 2、编写配置文件(web-inf/web.xml)
      • a.注册servlet
      • b.绑定路径(把类和路径绑定了),直接可以选择类复制qualified name;
    • 3、访问
      • http://主机:端口号/项目名/路径
  • 故障处理:如果没有在写代码时没有servlet的jar包,那我们需要在build path中添加config build path 然后选择library;
    • 之所以没有导入,是因为创建工程时,没有指定外源的服务器的包;
  • 配置文件的作用:我们在配置文件中相当于把我们的类名写出,那么服务器自动帮我们把这个类创造出来并适用了其中的方法。
    • 这里指的服务器就是tomcat,它相当于自动编写的一段脚本语言,即软件服务器;
    • xml中其实是将路径绑定到parttern里面的;
  • 接收参数:key=value
  • 回写内容:
    • response.getWriter().print(“成功”);
    • 处理响应数据中文乱码:
      • resp.setContentType(”TEXT/HTML;charset=UTF-8”);
  • 在设置javaEE的分层系统中,Dao层和Domain层较为重要些,是每个项目都需要的,其他的则根据不同项目特点要取不同的名字;
    • domain层是每个程序的bean类;
    • Dao层是对数据库进行的直接操作;
  • 登陆案例步骤:
    • 1.先有数据库和表
    • 2.创建工程
    • 3.复制页面
      • 修改login.html
        • 给用户名和密码添加name属性
        • 修改表单的action属性 action=”http://localhost/day0901/login”
        • 添加method属性 method=”post”
    • 4.导入jar包:
    • 5.导入工具类和配置文件
      • DBUtils
      • c3p0 配置文件;
    • 6.创建servlet(LoginServlet: 路径 /login)
      • 接受用户名和密码
      • 调用service层(UserService)完成登录操作
      • 提示信息
    • 7.UserService
      • login(username,password) 调用dao
    • 8.dao(对数据库进行直接操作)
      • 通过用户名和密码查询数据库
  • serlvet总结:
    • servlet常用方法:
      • void init(ServletConfig config):初始化
      • void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
      • void destroy():销毁
      • ServletConfig getServletConfig() :获取当前servlet的配置对象
    • GenericServlet常用方法:
      • 除了service方法没有显示,其他都实现了
      • 空参的Init() 若我们自己想对servlet进行初始化操作,重写这个init()方法即可。
    • HttpServlet常用方法:
      • service做了实现,把参数强转,调用了重载的service方法
        • 重载的service方法获取请求的方式,根据请求方式的不同调用相应doXxx()方法,相当于不用自己在选择doXX了。
        • service方法会自动判断什么属性,然后进行选择;
        • 两个service方法,是个很巧妙的方法;
      • doGet和doPost方法
  • servlet生命周期 ★★★
    • void init(ServletConfig config):初始化
      • 初始化方法
      • 执行者:服务器
      • 执行次数:一次
      • 执行时机:默认第一次访问的时候
    • void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
      • 服务
      • 执行者:服务器
      • 执行次数:请求一次执行一次
      • 执行时机:请求来的时候
    • void destroy():销毁
      • 销毁
      • 执行者:服务器
      • 执行次数:只执行一次
      • 执行时机:当servlet被移除的时候或者服务器正常关闭的时候
    • serlvet是单实例多线程
    • 默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作.并调用一次service方法
    • 每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑
    • 当serlvet被移除的时候服务器正常关闭的时候,服务器调用servlet的destroy方法实现销毁操作.
    • 也就是说,servlet其实也就是着三个方法的使用,因此其生命周期,也就是这三个方法的产生和使用过程;
  • 在servlet标签有一个子标签 load-on-startup
    • 作用:用来修改servlet的初始化时机
    • 取值:正整数 值越大优先级越低
  • 当我们的配置文件里面没有指定配置的话,会查找tomcat的web.xml,
    • 若请求我们自己的项目处理不了,tomcat的默认的servlet会帮我们处理信息
    • 有响应信息,但是并没有指定的页面
    • 因此,并不是每个网页的404长的都是一样的;
    • tomcat中也有一个配置文件,和工程的配置文件权限差不多;
  • dynamic如果选择3.0的话是没有配置文件的;
  • url-pattern的配置:★


      • 暂时不清楚
  • 路径的写法:

    • 相对路径:当前路径 ./ 或者 什么都不写
      • 上一级路径 ../
    • 绝对路径:(我们使用)
      • 带主机和协议的绝对路径(访问站外资源)http://www.itheima.com/xxxx
      • 不带主机和协议的绝对路径:/day09/hello(经常使用)
  • 常见的响应头–refresh
    • 响应头格式:refresh::秒数;erl=跳转的路径
    • 设置响应头:
      • response.setHeader(String key,String value);设置字符串形式的响应头;
      • response.addHeader(String key,String value);追加响应头,若设置过头则追加,若没有则设置;
      • 设置定时刷新:response.setHeader(“refresh”,”3;url=/day0901/login.htm”);
  • ServletContext:上下文(全局管理者)
    • 常用的方法:
      • setAttribute(String key,Object value);//设置值
      • Object getAttribute(String key);//获取值
      • removeAttribute(String key)://移除值
    • 获取全局管理者:getServletContext():
  • 在复制黏贴中,需要把web root改成新的项目;
  • 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
        • enumeration是哪个集合里面的?
      • ★getServletContext():获取全局管理者,讲config是为了这个;
    • servletconfig是由服务器创建的,在创建servlet的同时也创建了它,通过servlet的init;
    • (ServletConfig config)将config对象传递给servlet,由servlet的getServletConfig方法获取;
  • ServletContext:理解-上下文(全局管理者)
    • 一个项目的引用.代表了当前项目.
    • 当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
    • 当项目被移除的时候或者服务器关闭的时候servletcontext销毁
    • 作用:
      • 1.获取全局的初始化参数
      • 2.共享资源(xxxAttribute),即不同的servlet可以利用参数进行通信了;
      • 3.获取文件资源
      • 4.其他操作
    • 获取servletcontext:
      • 方式1:了解 -getServletConfig().getServletContext();源码的得到方式;
      • 方式2:getServletContext()
    • 常用方法:
      • 1.了解String getInitParameter(String key):通过名称获取指定的参数值
        • Enumeration getInitParameterNames() :获取所有的参数名称
        • 在根标签下有一个 context-param子标签 用来存放初始化参数
      • 2.xxxAttribute
      • 3.String getRealPath(String path):获取文件部署到tomcat上的真实路径(带tomcat路径)
        • getRealPath(“/”):D:\javaTools\apache-tomcat-7.0.52\webapps\day09\
        • InputStream getResourceAsStream(String path):以流的形式返回一个文件
      • 4.获取文件的mime类型 大类型/小类型
        • String getMimeType(String 文件名称)
  • 域对象:★★★servletcontext创建的;
    • 当成map集合
    • 常用方法:xxxAttribute()
    • servletcontext创建和销毁:
      • 当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
      • 当项目被移除的时候或者服务器关闭的时候servletcontext销毁
    • 存放:共享的数据
    • 这是一个servlet互相通信的媒介;
  • 获取文件的路径:
    • 通过类加载器获取文件:2.txt 放在classes目录下无论是java项目还是web项目都可以
      • 类.class.getClassLoader().getResource(“2.txt”).getPath()
      • 这个方法获取目录更加万金油;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值