您的位置:首页 > 产品设计 > UI/UE

Servlet&HTTP&Request

2020-01-15 11:21 274 查看

tomcat
一、回顾
1.软件架构:c/s b/s
2.资源分类:动态资源 静态资源
3.网络通信三要素:ip地址、端口、协议
4.协议:tcp、udp、http

二、web服务器
1.tomcat weblogic websphere jboss
2.tomcat安装、卸载、启动、关闭
3.tomcat配置 server.xml    三个端口
4.tomcat部署(练习)
    (1)直接部署
    (2)在server.xml中配置<context>标签
    (3)在conf中写xml文件
5.web项目的目录结构
6.idea集成tomcat(练习)

Servelt
一、快速入门(练习)
1.创建JAVAEE项目(模块)
2.定义一个类,实现Servlet接口
3.实现接口中的方法
4.配置servlet

二、请求——响应的全过程
1.客户端(浏览器)发送请求
2.服务器接收请求,提取请求的URL
3.根据URL获取web应用,找到应用中的web.xml文件
4.根据URL找到<url-pattern>,找到<servlet-name>
5.根据<servlet-name>,找到<servlet-class>
6.判断服务器内存中是否有当前的servlet对象。如果没有,使用反射创建该类的一个对象。如果有,直接使用该对象。
7.该对象执行service方法。
8.服务器以流的形式把结果写到客户端。

三、servlet的生命周期(练习)
1.init:初始化servlet,创建servlet对象的时候执行的,只执行一次
    通过load-on-startup控制创建servlet的时机,>=0服务器启动创建,否则第一次访问创建    
2.service
3.destory:销毁servlet,正常关闭服务器时执行,只执行一次。

四、servlet3.0新特性:通过注解@WebServlet设置路径(练习)

五、tomcat在idea中的相关配置
1.idea会为每一个tomcat部署的项目单独建立一份配置文件。通过控制台的Using CATALINA_BASE来找
2.tomcat真正访问的是部署的项目,不是工作空间的项目。
3.WEB-INF下的文件不能被浏览器直接访问。(练习)    

六、Servlet体系
Servlet 
    ----> GenericServlet(将Servlet接口中其他方法做了空实现,只留Service方法) 
     ----> HttpServlet(将HTTP协议做了封装,重写doget,dopost)

七、urlpattern配置
1.可以配置多个路径         {"/XXX","/XXX"....}
2.可以配置多层路径         "/XXX/XXX...."
3.*是通配符,代表任意路径       "/XXX/*"    "*.XXX"


Http
1.特点:基于TCP/IP,默认端口80,一次请求对应一次响应,不同的请求之间相互独立。    
2.请求消息的格式:请求行、请求头、请求空行、请求体(只有POST请求有)
    get请求参数在请求行中,post请求参数在请求体中。    

    POST /login.html HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Referer: http://localhost/login.html
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
            
    username=zhangsan


3.响应消息的格式    

Request
1.request是由服务器创建的,封装了http请求的数据。
2.ServletRequest ----> HttpServletRequest ----> RequestFacade(tomcat实现的)
3.Request里的方法。
    (1)练习获取请求行的8个方法
        String getMethod()  
        String getContextPath()
        String getServletPath()
        String getQueryString()
        String getRequestURI()
        StringBuffer getRequestURL()
        String getProtocol()
        String getRemoteAddr()

    (2)练习遍历请求头的所有数据
        Enumeration<String> getHeaderNames()        
    (3)练习获取浏览器版本
        getHeader("user-agent")
    (4)练习防盗链
        getHeader("referer")
    (5)练习获取请求体数据    ①BufferedReader getReader()    ②br.readline()
    (6)练习获取参数的四个通用方法
        String getParameter(String name)
        String[] getParameterValues(String name)
        Enumeration<String> getParameterNames()
        Map<String,String[]> getParameterMap()
    (7)练习解决中文乱码:在获取参数前加request.setCharacterEncoding("utf-8");
    (8)练习请求转发: request.getRequestDispatcher("路径").forward(request,response);
    (9)request共享域
        1. void setAttribute(String name,Object obj):存储数据
        2. Object getAttitude(String name):通过键获取值
        3. void removeAttribute(String name):通过键移除键值对
    (10)练习BeanUtils
        1. setProperty()
        2. getProperty()
        3. populate(Object obj , Map map)

转载于:https://www.cnblogs.com/aniymx/p/9916989.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
站内首发文章 diaojing4725 发布了0 篇原创文章 · 获赞 0 · 访问量 165 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐