Servlet学习

Servlet

request(请求)

所有和请求相关的操作,都用这个对象来处理

当有请求来的时候,request就被实例化

response对象

所有和响应相关的操作,都用这个对象来处理
当你想要给出响应时,response就被实例化

当你想要给出响应时,使用response
我们要给出的响应必须要展示在客户端(浏览器)

servlet的生命周期

初始化-init()只需调用一次默认当我们第一次访问servlet的时候被执行,延迟加载

提供服务- service() [doGet doPost] 多次(多线程)

销毁 destory() 只需要调用一次

设置字符集

我们需要设置字符集,不然会乱码

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

当我们向页面回应数据时,也会容易乱码,需要添加响应头

response.addHeader("content-type","text/html;charset=utf-8");

PrintWriter

使用printWriter对象可以向页面给出响应

这就是客户端和服务器端的信息传递
IO流

还需要关流out.flush();
out.close();

传参

最常见的客户端传参的方式两种:get,post

浏览器地址栏直接输入:一定是get请求

超级连接:一定是get请求

表单:可以是get,也可以是post,取决于method

get请求和post请求的区别

get:请求的参数会在浏览器的地址栏中显示,不安全,请求的长度限制在1k之内。没有请求体,无法通过request去设置一些参数。

post:请求的参数不会再浏览器的地址栏中显示,相对安全把请求的参数封装成几个数据报文(请求体),请求参数的长度没有限制。

request方法

getParameter()获取客户端传入的值

getParameterValues()获取一个key对应的多个值,返回值为String类型的数组

getParameterNames()拿到所有传过来的参数名称 就是key的值,可以根据key获取对应的值

getParameterMap()可以获取到请求中的所有的键值对,返回值是一个map集合,这个map集合的key是string, vaLue是string[ ]

请求转发

请求转发–有多个servlet来处理一个请求
请求转发实在服务器上完成的,跟客户端无关。

方法:

request.getRequestDispatcher("/Demo03").forward(request, response);
}

参数:转发的servlet地址

forward参数:把当前的servlet用的request和response传过去

原理:转发路径URL 在地址栏是不可见的, 可以共享请求对象

重定向

重定向则是浏览器端跳转,会产生两次请求

重定向语句是:response.sendRedirect()

原理:转发路径URL 在地址栏是可见的, 不可以共享Request对象。

作用域

作用域可以实现多个服务之间数据的共享

往request作用域中添加一个属性name,值是zhagnsan

//向域中添加数据
request.setAttribute("name","zhangsan");
//获取域中的数据
request.getAttribute("name")//加上转发到别的服务中,其他类也可以获得域中的值
request.getRequestDispatcher("Demo05").forward(request,response);

域中获取数据的方法

//获取request作用域中的所有的key
Enumeration<String> attributeNames = request.getAttributeNames(); //根据key获取value
Object name = request.getAttribute("name");

重定向和请求转发的区别

1.请求转发是两次请求,请求转发是一个请求

2.重定向是客户端行为,请求转发是服务器行为

3.重定向浏览器地址会发生改变,转发不会

4.重定向可以定向到任意地址,转发只能项目内转发

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值