Servlet简单基础

Servlet设置获取全局配置信息

两种方式
1.获取config对取出servlet配置信息

//先获取config对象
        ServletConfig servletConfig = this.getServletConfig();
        //取出servlet的配置信息
        String value = servletConfig.getInitParameter("username");
        System.out.println(value);

2.获取context域对象在获取全局配置信息

 //获取context域对象
        ServletContext application = this.getServletContext();
        //获取全局配置信息
        String value = application.getInitParameter("key");
        System.out.println(value);

获取服务器上的文件路径并读取

1.在src下新建一个名称为a的文件
2.使用Context域对象获取,它可以获取到服务器上任意资源路径
3.使用字节流读取a文件

// 获取a文件
        ServletContext context = this.getServletContext();
        // 获取服务器上的真实路径(绝对路径 磁盘路径)
        String path = context.getRealPath("/WEB-INF/classes/a.properties");
        System.out.println(path);
        // 读取文件
        Properties properties = new Properties();
        properties.load(new FileInputStream(path));
        System.out.println(properties.getProperty("key"));

请求转发

请求转发过程:浏览器发给服务器一个请求Demo01,但是Demo01执行不了,转发给Demo02由Demo02执行后发给Demo01再有Demo01响应给服务器。
请求转发定义:浏览器只发起一个请求,但是servlet内部做的请求转发浏览器不知道 ,请求地址不会发生改变。
代码实例:
Demo01


        System.out.println("你是大傻子");
        System.out.println("我不是 你看看Demo02是不是");

        //获取context域对象
        ServletContext qpplication = this.getServletContext();
        //从Context 类中获取请求转发器
        RequestDispatcher dispatcher = qpplication.getRequestDispatcher("/demo02");
        //进行请求转发
        dispatcher.forward(request, response);
        System.out.println("Demo02是大傻子");

Demo02

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("我是大傻子???");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

HttpServletResponse服务器响应对象

1.响应对象都有什么 ?
响应头:告诉浏览器要做什么,例如响应给你的文件需要下载什么格式
响应行:http/1.1 状态码200 等
响应体:响应回浏览器的数据
2.设置服务器编码格式
response.setContentType(“text/html;charset=UTF-8”);

response.setContentType("text/html;charset=UTF-8");
        // 响应一句话给浏览器
        // 从响应对象HttpServletResponse中获取流对象
        // 注意:这个流对象保护是自己创建,要从响应中获取

        PrintWriter out = response.getWriter();
        out.write("大傻子");

下载文件

思路:用户发送请求请求Servlet
servlet处理请求(在服务器上以流的形式使用response 响应给用户)
以下载图片为例
1.获取服务器上图片路径
2.用字符串切割 获取图片名字
3.修改文件名的字符集
4.添加响应头设置文件下载格式
5.使用字符流在服务器中读取图片
6.边读边写响应会浏览器。

//获取服务器上的图片路径
        String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/团子大家族.png");
        //字符串切割 获取图片名字
        int index = realPath.lastIndexOf("/");
        String filname = realPath.substring(index+1);
        System.out.println(filname);
        //修改文件名字的字符集
        filname=new String(filname.getBytes(), "iso-8859-1");
        //添加响应头(需要拼接文件名子)
        response.setHeader("content-disposition", "attachment;filename="+filname);
        //告诉浏览器文件下载的格式添加响应头
        response.setHeader("content-type", " image/png");
        //从服务器中读取图片
        FileInputStream  fis = new FileInputStream(realPath);
        // 注意:获取response中的字节流进行数据响应
        ServletOutputStream sos = response.getOutputStream();
            //边读边写
        int a = 0;
        byte[] b = new byte[1024];
        while((a = fis.read(b))!=-1) {
            // 响应回浏览器
            //如果只是单纯的把图片响应回去浏览器并不知道你要干啥(下载或浏览)
            //需要通过响应头 通知浏览器 我这个文件是下载用的
            sos.write(b, 0, a);
        }
        // 注意:自己创建的流自己关
        fis.close();

请求重定向

重定向含义:浏览器发起请求servlet给浏览器一个响应再响应中会携带一个重定向响应头浏览器接到这个响应后发现重定向头,再一次发起请求去访问重定向头中的地址
请求转发和请求重定向的区别:
请求重定向是发起了两次请求请求转发是发起一次请求。
1.跳转网址

//设置响应的字符集
        response.setContentType("text/html;charset=UTF-8");
        //3秒后跳转一个网址
        response.setHeader("refresh", "3;url=/java-web-servlet-3.27/demo08");
        response.getWriter().write("3秒后跳转");

2.刷新网址

//添加刷新头 (每秒刷新一次)
        response.setIntHeader("refresh", 1);
        //添加随机数
        response.getWriter().write(Math.random()+"");

3.重定向
Demo01代码:

//通过请求头的方式请求重定向
        System.out.println("我要借钱");
        System.out.println("我没有去找02");
        //添加重定向响应头
        //添加头信息请求网址时需要写明工程名
        response.setHeader("location", "/java-web-servlet-3.27/dome02");
        //添加重定向状态码
        response.setStatus(302);
        System.out.println("我去了");

Demo02代码:

System.out.println("给你");

HttpServletRequest

HttpServletRequest包含:
请求头
请求行
请求体
1.获取地址,获取请求类型,获取请求的路径

System.out.println(request.getRequestURI());// /java-web-servlet-3.27/demo08
        System.out.println(request.getRequestURL());// http://localhost:8080/java-web-servlet-3.27/demo01
        //获取请求的类型 GET(用浏览器直接回车请求的都是get请求)
        System.out.println(request.getMethod());
        // 获取请求的路径(相对路径) /java-web-servlet-3.27
        System.out.println(request.getContextPath());

2.获取请求中携带的参数
先写一个form表单
html代码:
表单
java代码

// 参数是你提交表单时表单的name属性
        String userName=request.getParameter("userName");
        String userPwd=request.getParameter("userPwd");
        System.out.println(userName+""+userPwd);

3.通过请求判断用户使用的浏览器

String header = request.getHeader("User-Agent");
        //Firefox chrome
        System.out.println(header);
        if(header.toLowerCase().contains("firefox")) {
            System.out.println("火狐");
        }else if(header.toLowerCase().contains("chrome")) {
            System.out.println("谷歌");
        }else {
            System.out.println("其他");
        }
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值