Servlet常用方法的说明

一、什么是servlet

        servlet就是在服务器端运行的java程序,它可以接收用户的请求并作出响应。

二、为什么要用servlet

        从servlet的概念我们就可以看出,它最重要的作用就是接收用户的请求,并作出响应,有了servlet,我们做的html页面就不再是静态页面了,就可以实现交互功能,这才是我们开发的目的。

三、常用方法

        我们在创建servlet项目时,它会自动的继承HttpServlet类,而且必须要覆盖重写它下面的doGet方法和doPost方法,而doPost方法最终也是调用doGet方法,而doGet方法就是我们需要重写的方法,怎么获取用户的请求,并作出响应,这就要说一下这个方法里面两个非常重要的参数:requset(请求)response(响应)。

1.ServletRequest(获取客户端请求的数据)接口常用方法

        ①Svoid  setCharacterEncoding(String charset)  //设置请求体的字符编码,这个方法常用来处理乱码,如果不设置字符编码,展示给用户的数据会变成乱码

        ①String  getParameter(String name)//返回指定请求参数的值

页面1:用户传入数据,并发出请求

页面2:服务器接收数据,并作出响应

如上图所示,此方法主要就是获取用户传递过来得数据,并进行处理,此方法传入的参数必须是html页面中的name名,否则是接不到值得。

        ②RequestDispatcher getRequestDispatcher( String path )//返回指向指定路径的请求分发对象(也就是我们常说得转发)

        通过上面的方法,我们可以获取到用户所填的数据,然后做完判断之后需要响应用户界面,此时就可以用转发来实现这个功能,需要注意的是,如果只是调用这个方法,是不能带着数据跳转的,需要加上forward方法,将我们的请求和响应一起带去展示界面,但是转发有一个缺点就是会让用户看到不应该看到的url,所以我们一般不用整个方法。

        ③String[ ] getParameterValues (String name )//返回指定请求参数的全部值

        在业务中肯定会遇到多选框的情况,此时传递过来的值的name都是一样,但是却有多条数据,如果再用 getParameter 这个方法肯定不合适,此时就会用到这个方法,来处理。

        图1:用户选择多条数据

        图2:调用此方法,来创建一个数组接收多条数据

        ④HttpSession getSession( )//获取此次请求的session对象,如果没有就会新建一个session,session中有两个很重要的方法,就是  session.setAttribute(String  name, Object object)session.getAttribute(String name);分别来向session会话中存数据和从session会话中取值,这两个方法的使用很简单,只要在此次session中,就可以从其他页面获取数据

需要注意的是有几种情况会让我们的session失效:

        a.浏览器关闭:如果用户将浏览器关闭,那这次的session会话就会失效

        b.服务器关闭:同理,如果服务器关闭,此次session会话也会失效

        c.超时:我们的session会话的默认存在时长是30分钟,可以通过session.setMaxInactiveInterval(Long  second)方法来设置session会话存在时长

        d.会话失效:可以手动调用session.invalidate();方法来让session会话失效

        ⑤Cookie[ ] getCookies( )//获取返回客户端在此次请求中发送的所有cookie对象,

        cookie也是一种会话技术,cookie会话的使用方法和session会话类似,在response中有void addCookie ( Cookie cookie )来向我们的cookie对象中添加数据,然后再调用方法来获取cookie中的数据。

图1:将数据存储在cookie中,同样也可以使用cookie1.setMaxAge(Long  second)来设置cookie会话存在的时长

图2:获取cookie中的数据

        cookie会话的使用也是比较简单的,我们可以通过这个会话技术来实现免登录,因为它会将数据存在我们的浏览器端。这里我做了一个简单的免登录的例子:从浏览器端是可以看到我们的账户名和密码的,这也暴露了cookie的另一个弊端,那就是不安全。

        session和cookie同为会话技术,他们之间还有有很多的区别的:

        a.存储位置不同(sion保存在服务器,cookie保存在浏览器)

        b.存储类型不一样(cookie中保存的是字符串,sion中保存的是object类型)

        c.sion会话结束数据也会销毁,而cookie能长时间保存数据

        d.安全性(cookie保存在浏览器,相对来说不安全)

        ⑥Object  getAtrribute(String  name)//获取名称为name的属性

        ⑦void   setAttribute(String name,Object  object)//在请求中保存名为name的属性

        上面这两个方法的使用和session对象中的两个方法的使用类似,一个是往我们的请求对象中赋值,一个是从我们的请求对象中取值,我们的servlet中也也有这两个方法,这三者之间的区别就是作用的范围不一样:

        session中的取值赋值只在此次session会话中有效,request中的取值和赋值只在此次请求范围内有效,二servlet中的方法则在整个servlet项目中有效

      2.ServletResponse(设置响应参数和向客户端发送响应数据 )接口常用方法  

        ①void setCharacterEncoding (String charset )//设置响应的字符编码

        ②void setContentType ( String type )//设置发送到客户端的响应的内容类型

        这两个方法的作用就是用来处理乱码,用法如下图所示:

       ③PrintWriter getWriter ( )//返回PrintWriter对象,用于向客户端发送文本,具体用法如下图所示:

        ④void addCookie ( Cookie cookie )//这个方法刚在cookie模块介绍过,这里就不再赘述了

        ⑤void sendRedirect(String location)//发送一个临时的重定向响应到客户端,以便客户端访问

新的 URL,这就是我们常说的重定向
        刚才request中介绍过转发,我们提到转发有一个缺点就是让用户看到了不该看到的url,所以一般不用,所以这里就要用到我们的重定向,就可以解决这个问题,直接在方法中传入我们的url地址,就会跳转到我们对应的url。需要注意的是,重定向是在浏览器端进项重定向的,所以是不带数据过去的,就要配合上我们的的session来传递数据。
        如下如所示,以登录为例,分别展示出了转发和重定向的基本工作原理:
       
        总结一下转发和重定向的区别:
        a.转发URL地址不会发生变化,重定向URl地址会发生变化
        b.转发是同一次请求,重定向是两次不同的请求
        c.③转发是在服务器端完成的,而重定向是在浏览器端完成的
        d.④转发是一次请求会共享数据,重定向是两次请求不共享数据        
以上就是servlet中常用的几个方法。
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值