JAVA第二阶段第十三天 Servlet(上)

Servlet 的操作

1.setStatus(“状态码”):设置其状态码
2.resp.sendError(“状态码”,“提示信息”);设置状态码和提示信息
3.HttpServletResponse:来操作器响应头
4.GZIPOutputStream:压缩流
5.ByteArrayOutputStream:内存流
6. resp.setHeader(“Content-Encoding”,“gzip”):设置服务器的压缩格式
7.resp.setHeader(“Content-length”,b.length+""):设置文本的长度
8.resp.setHeader(“Accept”,“bytes”):规定其为设置数组
9. resp.setHeader(“Cache-Control”,“no-cache”):不加载浏览器缓存中的数据
10.this.getServletContext().getResourceAsStream("/WEB-INF/1.jpg"):获取是发布到服务的图片的地址,返回值是一个输入流对象 InputStream
11.resp.getOutputStream():得到输出流对象,返回ServletOutputStream
12.resp.setContentType(“text/html;charset:utf-8”); 设置编码格式
13.req.getParameter(“uname”); 根据name值获取单个 14.req.getParameterValues(“hobbey”); 根据name值获取一组

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;

@WebServlet(name = "UserServlet",urlPatterns = "/userServlet")
public class Test extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置状态码
        //resp.setStatus(400);
        //设置状态码和描述信息
        //resp.sendError(400,"小伙子页面找不到");
        
        /*String str = "aabbsscccfffeeslkdsgfdgfdgafdgdsfgfhgjhgfgfdgfdfdgfdagjfdsjgfjgjfkdsjfkf";
        System.out.println(str.getBytes().length);
        //内存流
        ByteArrayOutputStream by = new ByteArrayOutputStream();
        //压缩流
        GZIPOutputStream gzips = new GZIPOutputStream(by);

        //读取数据
        byte[] b = by.toByteArray();
        System.out.println(b.length);*/

        /*//设置服务器的压缩格式
        resp.setHeader("Content-Encoding","gzip");
        //设置文本格式
        resp.setHeader("Content-length",b.length+"");
        //规定其为设置字节数组
        resp.setHeader("Accept","bytes");
        //不加载浏览器缓存中的数据
        resp.setHeader("Cache-Control","no-cache");*/

       /* //设置响应的图片
        resp.setHeader("Content-Type","jpg");
        //把图片转换为输入流对象
        InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/01.png");
        //得到respone的流写入对象
        ServletOutputStream so = resp.getOutputStream();
        //把数据读取出来写入ServletOutputStream 对象
        //创建带缓冲区的数据对象
        byte[] i = new byte[1024];
        int leng = -1;
        while ((leng = is.read(i)) != -1){
            so.write(i,0,leng);
        }
        //关闭流
        so.close();*/

        //下载图片
        //输出流对象
       InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/01.png");
       String fileName = req.getParameter("fileName");
       //下载时一定要加上这句话
       resp.setHeader("Content-Disposition","attachment;fileName="+fileName);
        //得到输出流对象
        ServletOutputStream so = resp.getOutputStream();

        byte[] b = new byte[1024];
        int leng = -1;
        while ((leng = is.read(b)) != -1){
            so.write(b,0,leng);
        }
        so.close();
    }
}

响应的内容格式

resp.setHeader(“Content-Type”,“jpg”):设置响应的图片
Content-Type text/html:文件 jpg、gif:图片

响应体

就是在网页上写内容,resp.getOutputStream():主要是用于来写字节,resp.getWriter():主要用于写字符

重定向

1.就是跳转到另一个界面:resp.sendRedirect(“index.jsp”); 参数是传递的是需要跳转的界面,重定向相当于两次请求
2.间隔多长时间再跳转到某个界面,resp.setHeader(“refresh”,“2;index.jsp”);第二个参数是 “时间(秒);重定向的界面”

文件的下载

resp.setHeader(“Content-Disposition”,“attachment;fileName=”+fileName); 一定要加上这句话

//下载图片
        //输出流对象
       InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/01.png");
       String fileName = req.getParameter("fileName");
       //下载时一定要加上这句话
       resp.setHeader("Content-Disposition","attachment;fileName="+fileName);
        //得到输出流对象
        ServletOutputStream so = resp.getOutputStream();

        byte[] b = new byte[1024];
        int leng = -1;
        while ((leng = is.read(b)) != -1){
            so.write(b,0,leng);
        }
        so.close();

HttpServletRequest

1.servlet创建的请求对象,继承 ServletRequest,不支持Http协议
2.HttpServletRequest:一般操作请求行、请求头和请求体

请求行的组成

请求的地址, 请求的端口号,请求的参数,请求方法的名称,请求的访问根目录(如果项目与根目录一样,访问就是空的)

service 方法的作用

1.req.getMethod(); 获取请求方法
2.req.getContextPath(); 获取请求的跟路径
3.req.getQueryString(); 获取请求拼接的参数
4.req.getRequestURI(); 获取请求的uri地址
5.req.getRequestURL(); 获取请求的url地址

获取网络资源:
1.req.getRemoteUser(); 获取到客户端的用户名
2.req.getRemoteAddr(); 获取到客户端的地址
3.req.getRemoteHost(); 获取其ip地址

获取服务器资源:
1.req.getLocalAddr(); 获取服务器的地址
2.req.getLocalName(); 服务器ip名称
3.req.getLocalPort(); 服务器端口号
4.req.getServletPath(); 获取服务器的访问路径
5.req.getServerName(); 服务器的ip地址
6.req.getServerPort(); 服务器的端口号

package com.offcn.test;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "testServlet",urlPatterns ="/testServlet")
public class Test1 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求的方法
        String method = req.getMethod();
        //获取到根的路径
        String path = req.getContextPath();
        //获取到拼接的参数
        String query = req.getQueryString();
        //获取到uri路径
        String uri = req.getRequestURI();
        //获取到url路径
        StringBuffer url = req.getRequestURL();

        //设置编码格式
        resp.setContentType("text/html;charset:utf-8");

        //等到响应对象输出对象
        PrintWriter pw = resp.getWriter();
        pw.write(method);
        pw.write(path);
        pw.write(query);
        pw.write(uri);
        pw.write(url.toString());

        System.out.println(method);
        System.out.println(path);
        System.out.println(query);
        System.out.println(uri);
        System.out.println(url.toString());
        pw.close();

        /*//获取客户端的用户名、客户端地址、ip地址
        String user = req.getRemoteUser();
        String addr =req.getRemoteAddr();
        String host =req.getRemoteHost();
        System.out.println(user);
        System.out.println(addr);
        System.out.println(host);

        //获取服务器的地址、ip名称、端口号
        String add = req.getLocalAddr();
        String name = req.getLocalName();
        int port= req.getLocalPort();
        System.out.println(add);
        System.out.println(name);
        System.out.println(port);

        //获取访问路径
        String path = req.getServletPath();
        //服务器的ip地址
        String names = req.getServerName();
        //服务器端口号
        int ports = req.getServerPort();
        System.out.println(path);
        System.out.println(names);
        System.out.println(ports);*/

    }
}

设置编码格式

1.resp.setContentType(“text/html;charset=utf-8”); 到tomcat里配置 URIEncoding=“UTF-8”
2. resp.setCharacterEncoding(“utf-8”);
3. req.setCharacterEncoding(“utf-8”);

 		//设置编码格式
        resp.setContentType("text/html;charset=utf-8");
        resp.setCharacterEncoding("utf-8");
        //设置请求的编码格式
        req.setCharacterEncoding("utf-8");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值