Servlet内容

Servlet的2种请求:get请求、post请求
     get请求、post请求区别:
    1、get请求,请求的数据会附加在URL(统一资源定位器)之后,以?分割URL和传输数据,多个参数用&连接
        post请求:把请求的数据放置在HTTP请求包的包体中
        get请求:数据会暴露在地址栏中,而post请求不会(比较私密,会把数据隐藏起来)
    2、传输数据的大小
        HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在开发中,对于get,特定的浏览器和服务器对URL长度有限制
        即:get请求时传输数据会受到URL长度的限制,各个服务器会规定post提交数据大小进行限制
        GET 方法有大小限制:请求字符串中最多只能有 1024 个字符。
      3、安全性
        post的安全性比GET的高(对于一般含密码之类的用post请求)

 常用方法:
    1、String getParameter(String name):根据表单组件名称获取提交数据,返回值是String(服务器在接收数据时使用字符串统一接收)(可以用于接收返回数据)
    2、String[] getParameterValues(String name):获取表单组件对应多个值时的请求数据
    3、void setCharacterEncoding(String charset):指定每个请求的编码(针对post请求才起作⽤)
    4、RequestDispatcher getRequestDispatcher(String path) --跳转⻚⾯,返回⼀个RequestDispatcher对象,该对象的forward( )⽅法⽤于转发请求
    Servlet读取表单数据
    1、getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
    2、getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
    3、getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。


     客户端如何发送数据给服务器
    1、通过表单(form)get/post提交
    2、通过a标签(href)发送数据(get提交):第⼀个参数使⽤?拼接,之后的参数使⽤&拼接
    3、通过地址栏直接拼接——get请求
    4、js提交数据——get请求


Servlet的生命周期(从servlet出现到消亡的全过程)
    三个方法:  利用接口implements Servlet可以实现重写
        1、init()初始化阶段
        2、service() 处理客户端请求阶段 ---> 处理请求的具体实现
            service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
        3、destroy() 终止阶段 -->回收时调用

转发和重定义:
    重定义(sendRedirect):(属于客户端行为) 服务器在收到客户端请求后,会通知客户端浏览器重新向另外一个URL发送请求
        本质上会发送两次HTTP请求
     转发(forward):(服务器行为)将用户对当前jsp页面或servlet请求转发给另一个jsp页面或servlet并进行传递
转发和重定义比较(区别):
    1、原理不同:都是由服务器控制,但重定义在客户端进行跳转,两个请求,而转发在服务器端进行跳转,一个请求
    2、语法不同:转发:req.getRequestDispatcher("转发页面的地址").forward(req,resp);重定义resp.sendRedirect("./first");
    3、跳转范围不同:重定义整个互联网;转发:当前项目
    4、跳转后获取保存:转发可以得到req对象和resp对象中内容;重定义得不到req对象和resp对象的内容,因为相当于一个新的请求
    5、效率不同:转发效率高于重定义
    6、浏览器地址栏URL是否发生变化:转发不会;重定义会
转发和重定义的选择:
    1、使用重定义情况:跳转到不同的应用(只能用重定义)使用Cookie存储数据
    2、使用转发:希望前后两个组件共享req数据;跳转到同一个WEB-INF目录下(只能选择转发)

作用域:page、request、session、application(作用域大小依次增大)
    1、page:在当前页面有效
        生命周期:当请求时开始,响应结束时销毁
        2、request:在一个完整的请求中有效
        
        3、session:只要浏览器不关闭就有效
        4、application:只要服务器不关闭就有效


Cookie:是一种浏览器缓存,是保存在客户端的纯文本文件,可减少服务器的压力
    步骤:
         1、创建一个Cookie对象写入cookie
         2、设置过期时间
         3、添加到HTTP响应头
         4、获取返回给客户端的Cookie数组
         5、遍历取出每个cookie


cookie与session的区别:
    1、从存储方式上:cookie只能存储字符串,如果存储非ASCII字符串还要对其编码;session可以存储任何类型的数据
    2、从隐私安全上:   cookie存储在浏览器中,对客户端是可见的,存在安全问题,如果使用需进行加密;session存储在服务器中,对客户端是透明的,不存在安全泄漏问题
    3、从有效期上:cookie保存在硬盘中,关闭浏览器仍存在;session保存在服务器中,关闭浏览器,没有从服务器消亡但也失效
    4、从对服务器的负担:session保存在服务器中,每一个用户都会产生一个session,如果并发访问用户多,不能使用session会消耗大量内存;Cookie是保存在客户端的。不占用服务器的资源。像baidu、Sina这样的大型网站,一般都是使用Cookie来进行会话跟踪。
    5、从浏览器的支持上:如果浏览器禁用了cookie,那么cookie是无用的,但session可以通过URL地址重写进行会话跟踪
    6、从跨域名上:cookie可以设置domain属性来实现跨域名;session只在当前的域名内有效,不可夸域名


过滤器:过滤器是处于客户端和服务端目标资源之间的过滤技术。在客户端发送请求时,会先经过过滤器,在到servlet,响应时会根据执行流程再次反向执行过滤器。
过滤器的作用:
    1.   过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息,也就是说可以监视,修改或以某种方式处理客户端与服务端下在交流的数据
    2.过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:
    (1)在客户端的请求访问后端资源之前,拦截这些请求。
     (2)在服务器的响应发送回客户端之前,处理这些响应。
创建过程:
     1、实现javax.servlet.Filter接口
    2、实现init方法,读取过滤器的初始化参数
    3、 实现doFilter方法,完成对请求或响应的过滤
    4、 调用FilterChain接口对象的doFilter方法,向后续的过滤器传递请求或响应

实现接口Filter
    init():初始化
    doFilter(ServletRequest req, ServletResponse resp, FilterChain chain):
        ServletRequest req:处理请求的
        ServletResponse resp:处理响应
        这两个参数需要做类型强转,变为HttpServletRequest,HttpServletResponse
        FilterChain chain:放行,如果还有过滤器则进入下一个过滤器,没有则进入servlet
     destroy():销毁
     案例:
         编码过滤
         登录认证

Sevlet的MVC模式
    MVC概念
    MVC是模型(model)视图(view) 控制器(controller)
        模型:用于存储数据以及处理用户请求的业务逻辑
         视图:向控制台提交数据,显示模型中的数据
        控制台:根据视图提出的要求,判断将请求和数据交给那个模型处理,处理后的有关结果交给那个视图更新显示
    基于 Servlet 的 MVC 模式的具体实现如下。
          模型:一个或多个 JavaBean 对象,用于存储数据(实体模型,由 JavaBean 类创建)和处理业务逻辑(业务模型,由一般的 Java 类创建)。
          视图:一个或多个 JSP 页面,向控制器提交数据和为模型提供数据显示,JSP 页面主要使用 HTML 标记和 JavaBean 标记来显示数据。
          控制器:一个或多个 Servlet 对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的 JavaBean,并将处理结果存放到实体模型 JavaBean 中,输出给视图显示。

Servlet的三层架构
    Servlet(controller):处理JSP页面传输的数据,一般通过req.getParameter获取表单中属性为name参数中的value值,在Servlet层中一般会通过new的方式创建一个Service
                User Service user= new UserServiceimpl();因为Service层会创建一个接口写一些方法,并创建一个实现类实现这个接口
    Service层:处理前端传输的数据进行数据库的增删改查,或者处理dao层从数据库获取的数据
    dao层:用来与数据库进行交互,也就是增删改查。可以通过前端传输过来的数据对用户的信息进行增删改查

-->  先写入实现类(entity) --> 建立数据库连接(设置驱动、连接数据库、关流)
    --> dao层创建接口并实现类(类中可以进行对数据库的增删改查)
    --> service层创建dao层的对象(userDao ud = new userDaoImpl();)并进行处理。  可以展示到浏览器页面处理前端数据
    -->  controller层创建service层的对象(userService us = new userServiceImpl();)处理JSP页面传输的数据
    --> 最后在结果前端页面(web)现在修改

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值