servlet入门(二)resquest和response

resquest和response

HttpServletRequest和HttpServletResponse分别对继承了HttpServlet的Servlet提供了两个对象,即request和response,通过这两个对象可以实现客户端与服务器端的交互
从客户端发出使用request,服务器端发出使用response

一、resquest方法

`1. 相关set方法
 2. setCharacterEncoding()设置请求参数的编码方式,只对post请求有效
 3. getMethod()获取请求类型
 4. getParameter()获取指定请求参数值
 5. getParameterNames()获取所有请求参数,返回一个Enumeration枚举类
 6. getAttribute()获取域中存储的数据
 7. getAttributeNames()获取域中所有数据,返回一个Enumeration枚举类
 8. getContextPath()返回当前WEB项目相对路径
 9. getCookies()获取所有Cookie,返回一个Cookie数组
 10. getRequestDispatcher()获取转发器,参数路径以/打头,代表WebRoot(当前WEB项目根目录)
 11. getSession()获取Session对象

二、response方法

response.setContentType(“text/html;charset=UTF-8”)这个方法非常常用,设置了响应的数据类型和编码方式,通常放在servlet方法中的第一行

 1. setContentType()告知浏览器数据类型
 2. setCharacterEncoding设置Response的编码方式
 3. setHeader()设置消息头
 4. setStatus()设置状态吗
 5. addCookie()添加Cookie
 6. sendRedirect()重定向
 7. getOutputStream()获取通向浏览器的字节流(同一次请求处理中,字节流和字符流不能同时存在)
 8. getWriter()获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能同时存在)

休息一下吧

三、常用方法案例

会话技术和域对象放在下一篇中,这里讨论页面跳转,获取表单参数,响应文本

3.1、response重定向、reaquest请求分发

这里的跳转可以是静态资源也可以是动态资源

reaquest请求分发
之前说了,resquest由客户端发出请求,服务器端接收,做出响应,
那么请求分发由服务器处理,在服务器内部跳转,
这时候使用绝对路径就可以了,服务器路径可以省略

通常我们这么写就可以了,跳转到web应用下的form.jsp

request.getRequestDispatcher("/form.jsp").forward(request,response);
response重定向
重定向是由服务器响应信息给客户端,由客户端完成跳转,
那么客户端可以跳转到任意地址,不在局限于当前服务器中,
所以需要绝对路径

我们这么写就行了

response.sendRedirect(request.getContextPath()+"/index.html"); 
response.sendRedirect("http://www.baidu.com");

注意哦,重定向域名变化,分发域名是不变的哦

3.2、获取表单参数

getParameter()系列方法

如下表单,action属性确定提交URL,这里由浏览器提交,所以需要绝对路径,
method确定提交方法
input中的name属性标识了本标签,其中的value属性为输入框中的值,
通过request.getParmeter(name值)获得value值

 <form action="/url" method="post">
        姓名:<input type="text" name="username"  value="haha  " >
        年龄:<input type="text" name="userage">
        <input type="submit" value="提交">
    </form>

3.3、响应文本

服务器端响应客户端,字节流和字符流,两种获取到的类型分别是ServletOutputStream和PrintWriter,使用方法也有差别,虽然都有write和println方法,但字节流使用二进制,打印汉字时需要转换流内数据编码(write方法),而字符流不需要,所以通常处理文本响应直接使用字符流更加方便啦
随后response.setContentType(“text/html;charset=UTF-8”);将数据类型编码方式处理完毕响应给浏览器

 response.setContentType("text/html;charset=UTF-8");
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write("<h1>Hello,朋友</h1>".getBytes("UTF-8"));
        PrintWriter writer = response.getWriter();
        writer.println("<h3>响应你的消息</h3>");

注意哦,测试中似乎对第一个流对象做出反应,第二个不接受了,也就是说,servlet中只接受一个流对象,即靠前的那个

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值