JavaWeb——Servlet介绍与request学习

servlet: server applet

概念:运行在服务器端的小程序
        *servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
        *将来我们定义一个类,实现Servl接口,复写方法

快速入门:
        1.创建一个JavaEE项目
        2.定义一个类,实现Servlet接口
        3.实现接口中的抽象方法
        4.配置Servlet
        在web.xml中进行配置
            <servlet>
                <servlet-name>dem01</servlet-name>
                <servlet-class>com.example.comProject.HelloServlet</servlet-class>
            </servlet>
            <servlet-mapping>
                <servlet-name>dem01</servlet-name>
                <url-pattern>demo01</url-pattern>
            </servlet-mapping>
执行原理:
        1.当服务器受到客户端浏览器的请求时。解析请求的url路径,获取访问的Servlet的资源路径
        2.查找web.xml,查看是否有对应的<url-pattern>标签体的内容
        3.如果有,则再找到对应的<servlet-class>全类名
        4.tomcat会将字节码加载进内存,并创建其对象

Servlet中的生命周期
        1.被创建:执行init方法
        2.提供服务:执行service方法,执行多次
        3.被销毁:执行destroy,执行一次
            *服务器正常关闭时,才会执行destroy方法,在Servlet销毁之前执行

Servlet3.0版本介绍
            好处:
                支持注解配置。可以不用web.xml

            使用步骤:
                1.创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
                2.定义一个类,实现Servlet接口
                3.复写方法
                4.在类上使用@webServlet注解,进行配置
                    @webServlet("资源路径")

HTTP请求介绍

概念:Hyper Text Transfer Protocol 超文本传输协议
        *传输协议:定义了客户端和服务器端通信时发送数据的格式
        *特点:
            1.基于TCp/IP的高级协议
            2.默认端口号是8080:
            3.基于请求/响应模型的:一次请求对应一次响应

        HTTP历史版本:
        *1.0:每一次请求响应都要重新建立连接
        *1.1:复用连接
请求消息数据格式
        1.请求行
            *格式:请求方式 请求url 请求协议/版本
                GET/login.http/HTTP/1.1
            *请求方式:
                HTTP协议有7种请求参数,常用的有两种
                    *GET
                        1.请求参数在请求行中,具体说就是在url之后
                        2.请求的url长度是有限度的
                        3.该方式不太安全
                    *POST
                        1.请求参数在请求体中。
                        2.请求的url的长度没有限度的
                        3.该方式相对安全
        2.请求头:客户端告诉浏览器的一些信息
            *格式:请求头名称:请求头的值
            *常见的请求头:
                1.User—Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
                    *可以在服务器段获取该头信息,解决浏览器兼容问题
                2.Referer:http://localthost/login.html
                    *告诉服务器,我(当前请求)从哪里来?
                        作用:
                            1.防盗链
                            2.统计工作
        3.请求空行
            字面意义上的空行,用于分隔POST的请求头与请求体
        4.请求体(正文)
            封装POST传递的参数信息

request使用

request对象和respond对象的原理
        1.tomcat服务器会根据请求的url中的资源路径创建对应的Servlet的对象
        2.tomcat服务器,会创建request和respond对象,request对象封装请求消息
        3.tomcat将request和respond对象传递给service方法,并调用service方法
        4.程序员(我们),可以通过request对象获取请求数据,通过respond对象响应消息数据
        5.服务器再给浏览器做出响应之前,会从respond对象拿程序员设置的响应消息数据。
    总结:request和respond对象是服务器创建的,由我们使用。request是获取请求消息,response对象是设置响应消息

 request对象的继承体系结构:
        ServletRequest      --接口
            |继承
        HTTPServletRequest  --接口
            |实现
        org.apache.catalina.connector.RequestFacade  --(类)实现接口

request基本功能:
        1.获取请求消息数据
            1.获取请求行数据
                *请求头如:GET/虚拟目录/login.http?name=zhangsan/HTTP/1.1
                *实现方法:
                    1.获取请求方式:String getMethod()
                    2.(*)获取虚拟目录:String getContextPath()
                    3.获取Servlet路径:String getServletPath()
                    4.获取get方法的请求参数:name=zhangsan String getQueryString()
                    5.(*)获取请求的URI:
                        String getRequestURI()  /虚拟目录/login.http
                        String getRequestURL()  http://localhost/虚拟目录/login.http

                        URL:统一资源定位符 http://localhost:8080/requestdemo02
                        URI:统一资源标识符 /requestdemo02
                    6.获取协议或版本号:/HTTP/1.1
                        String getProtocol()
                    7.获取客户机的IP地址
                        String getRemoteAddr()
            2.获取请求头数据
                方法:
                    *String getHeader(String name):通过请求头的名称获取请求头的值
                    *Enumeration<String> getHeaderNames:获取所有请求头的名称
            3.获取请求体数据
                *请求体:只有post请求方式,才有请求体,在请求体中封装了POST请求的参数
                *步骤:
                    1.获取流对象
                        *BufferedReader getReader(): 获取字符输入流,只能操作字符数据
                        *ServletInputStream getInputStream():获取字节流,可以操作所有数据类型
                            *在文件上传中使用
                    2.再从流对象中拿数据

request功能进阶
        1.获取请求参数的方法:无论是get还是post方法都可以使用下列方法获取请求参数
            1.String getParameter(String name):根据请求参数获取参数值 username=username&passward=123
            2.String[] getParameterValues(String name):根据请求参数获取参数值的数组 studentbname=li&studentbname=王;用于属性名相同,如复选框
            3.Enumeration<String[]> getParameterNames():获取所有请求参数的名称
            4.Map<String,String[]> getParameterMap():获取所有参数的mao集合
            *中文乱码问题
            *get方式:tomcat8以上已经将get方式中文乱码问题解决了
            *Post方式:解决方式
                解决:在获取参数设置request的编码:req.setCharacterEncoding("utf-8");
        2.请求转发:一种在服务器你内部资源跳转的方式
            1.步骤
                1.通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
                2.通过RequestDispatcher进行转发:forward(ServletRequest request,ServletRespond respond)//进请求的request与respond一并转发过去post提交

            2.特点
                1.浏览器地址栏路径不发生变化
                2.只能访问当前服务器内部资源中
                3.转发是一次请求,多个资源之间使用的是同一个请求

        3.共享数据
            *域对象:一个有作用范围的对象,可以在作用范围内共享对象
            *request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
            *方法:
                1.setAttribute(String name,Object value);储存数据
                2.Object getAttribute(String name);获取数据
                3.void removeAttribute(String name):移除数据
        4.获取ServletContext
             *ServletContext getServletContext(),可以通过request对象获取

BeanUtil工具类

用于封装JavaBean类,简化数据封装
        1.JavaBean要求:标准的类
            1.类必须被public修饰
            2.必须提供空参的构造器
            3.成员变量必须使用private修饰
            4.提供更高的setter与getter方法
        2.功能:封装数据
概念:
    成员变量:
        属性:setter与getter方法截取后的产物
            例如:getUsername()-->Username-->username
方法:
        1.setProperty()
        2.getProperty()
        3.populate(Object obj,Map map)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值