2022年Servlect课时十五——Servlect 56天的学习总结。(一)

简介: 2022年Servlect课时十五——Servlect 56天的学习总结。

servlect常用对象的总结

对象@1 ServletConfig对象。

用途:获取静态数据的 。不能共享给其他servlect

方案一

<servlet-name>Servlet1</servlet-name>
 <servlet-class>com.Servlet.Servlet1</servlet-class>
 <!-- 注意<init-param>写在里面 -->
 <init-param>
 <param-name>home</param-name>
 <param-value>二家酒店</param-value>
 </init-param>
 <init-param>
 <param-name>money</param-name>
 <param-value>200万</param-value>
 </init-param>
 <init-param>
 <param-name>h</param-name>
 <param-value>173cm</param-value>
 </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>Servlet1</servlet-name>
  <!--设置浏览器地址  -->
  <url-pattern>/S</url-pattern>
  <!-- 设置地址访问一定加/asd -->
  </servlet-mapping>
  <servlet>

方案二

package com.Servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class Servlet2
 */
@WebServlet(urlPatterns = "/Servlet2",initParams = {
        @WebInitParam(name="aaaa",value="张三"),
        @WebInitParam(name="age",value="23"),
        @WebInitParam(name="height",value="179cm"),
        @WebInitParam(name="weight",value="60kg")
})
public class Servlet2 extends HttpServlet {
    private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Servlet2() {
        System.out.println("Servlet2值一送到");
    }
    @Override
    public void init() throws ServletException {
        // TODO Auto-generated method stub
        super.init();
        //定义五个静态数据
        ServletConfig config=getServletConfig();
        String a=config.getInitParameter("aaaa");
        String b=config.getInitParameter("age");
        String c=config.getInitParameter("height");
        String e=config.getInitParameter("weight");
        System.out.println(a+"===="+b+"#######"+c+"-----"+e);
        //
        String d=config.getInitParameter("money");
        System.out.println(d);
        System.out.println(e);
    }

对象@2 ServletContext对象。

作用:获取共享静态数据,获取共享动态数据,获取共享文件数据.

方案一在web.xml

<context-param>
  <param-name>lq</param-name>
  <param-value>篮球</param-value>
  </context-param>
  <context-param>
  <param-name>zq</param-name>
  <param-value>足球</param-value>
  </context-param>

方案二

 

ServletContext  sc=getServletContext();
        //获取web.xml文件中的镜头数据
        String a=sc.getInitParameter("lq");
        //获得servlet4共享的排球
        String b= (String) sc.getAttribute("pq");
        //删除排球
        sc.removeAttribute("pq");
        //给浏览器发送数据
        response.getWriter().append("Servlet1获得静态数据用来访问lq:"+a);
        response.getWriter().append("response.getWriter().append方法打印内容");
        response.getWriter().append("Servlet1获得静态数据用

1 动态数据获取的方法

·  
     response.setCharacterEncoding("UTF-8");
        //获取ServletContext 对象
        ServletContext sc=getServletContext();
        //将排球共享数据 setAttribute方法共享数据。
        //在java中object是任何数据类型的父类。
        //身份的多种类型;向上转型
        sc.setAttribute("pq", "排球");
        //删除1动态数据
        sc.removeAttribute("pq");
        //身份的多种类型;向上转型(强制转型)
        //获得动态数据
        //疯狂java讲义
        //getimitParameter只能获得静态数据
         String  a= (String) sc.getAttribute("pq");
        response.getWriter().append("Servlet4获得动态数据 "+a);
    }

2 图片数据的共享

 

ServletContext sc=getServletContext();
                //指定文件名称获取完整路径
                String path=sc.getRealPath("text.txt");
                //控制台打印输出文件完整路径
                System.out.println(path);
                //将text.txt读取出来
                //IO inputStream /outputStream输出流。
                //网上下载的图片以自己为主场输入
                //总结:始终以自己为主场,观察数据流向。
                /* InputStream is=sc.getResourceAsStream("/text.txt");文件相对路径转为输入流 */
                InputStream is=sc.getResourceAsStream("/text.txt");
                //分析:1.假设text.txt是一部一百万的小说
                //当读取大量数据的时候,采取分段读取,部分读取
                //一般情况下,一次读取1024字节byte=1kb 512个字
                byte[] bytes=new byte[1024];
                //分析:2.数据非常少的时候
                //定义一个变量,用于记录每一次读取的字节数
                //判断记录的字节数是否小于1024,表示快读取结束
                int count=-1;//-1标记为读取结束
                //定义一个字符串用于汇总每次读取的部分字符串内容
                String sum="";
                //循环读取
                while ((count=is.read(bytes))!=-1) {
                    //需要将每一次读取的字节数组转换成字符串
                    String s=new String(bytes, 0, count);
                    sum+=s;
                }
                System.out.println(sum);
            //  指定文件夹
            Set<String> oSet=sc.getResourcePaths("/WEB-INF");
            for (String string : oSet) {
                System.out.println(string);
            }
            //response.getWriter().append("Served at: ").append(request.getContextPath());
        response.getWriter().append("Servlet1获得静态数据用来访问lq:");
        response.getWriter().append("response.getWriter().append方法打印内容");
        response.getWriter().append("Servlet1获得静态数据用来访问pq:");
    }

3 获取文件数据

ServletContext sc=getServletContext();
                //指定文件名称获取完整路径
                String path=sc.getRealPath("text.txt");
                //控制台打印输出文件完整路径
                System.out.println(path);
                //将text.txt读取出来
                //IO inputStream /outputStream输出流。
                //网上下载的图片以自己为主场输入
                //总结:始终以自己为主场,观察数据流向。
                /* InputStream is=sc.getResourceAsStream("/text.txt"); */
                InputStream is=sc.getResourceAsStream("/text.txt");
                //分析:1.假设text.txt是一部一百万的小说
                //当读取大量数据的时候,采取分段读取,部分读取
                //一般情况下,一次读取1024字节byte=1kb 512个字
                byte[] bytes=new byte[1024];
                //分析:2.数据非常少的时候
                //定义一个变量,用于记录每一次读取的字节数
                //判断记录的字节数是否小于1024,表示快读取结束
                int count=-1;//-1标记为读取结束
                //定义一个字符串用于汇总每次读取的部分字符串内容
                String sum="";
                //循环读取
                while ((count=is.read(bytes))!=-1) {
                    //需要将每一次读取的字节数组转换成字符串
                    String s=new String(bytes, 0, count);
                    sum+=s;
                }
                System.out.println(sum);
                //response.getWriter().append("Served at: ").append(request.getContextPath());
        response.getWriter().append("Servlet1获得静态数据用来访问lq:");
        response.getWriter().append("response.getWriter().append方法打印内容");
        response.getWriter().append("Servlet1获得静态数据用来访问pq:");

4 静态数据的获取ServletContext

//1获取ServletContext对象
        ServletContext  sc=getServletContext();
        //获取web.xml文件中的镜头数据
        String a=sc.getInitParameter("lq");
        //获得servlet4共享的排球
        String b= (String) sc.getAttribute("pq");
        //删除排球
        sc.removeAttribute("pq");
        //给浏览器发送数据
        response.getWriter().append("Servlet1获得静态数据用来访问lq:"+a);
        response.getWriter().append("response.getWriter().append方法打印内容");
        response.getWriter().append("Servlet1获得静态数据用来访问pq:"+b);

对象@3 HttpServletResponse 对象。

HttpServlet调用HttpResponse的有关方法,生成响应数据:

用法一

//设置servlet发送的数据支撑HTML格式
  response.setContentType("text/html");
  //设置发送servlet 浏览html格式 utf-8
  response.setCharacterEncoding("UTF-8");
  PrintWriter pw=response.getWriter();
  String info1="你好世界";
  pw.print(info1);

用法二生成图片的下载

// 使用对象完成图片的下载
  //设置servlet发送的数据支撑HTML格式
  response.setContentType("text/html");
    //设置发送servlet 浏览html格式 utf-8
  response.setCharacterEncoding("UTF-8");
  //设置响应头
  response.setHeader("content-disposition", "attachment;filenname=flower.jpg");
  ServletContext sa=getServletContext();
  String path=sa.getRealPath("/imges/yu.png");
  InputStream is =new FileInputStream(path);
  byte [] bytes =new byte[1024];
  int count=-1;
  OutputStream os=response.getOutputStream();
  while((count=is.read(bytes))!=-1) {
    os.write(bytes,0,count);
  }

用法三生成随机数

response.setCharacterEncoding("UTF-8");
  response.setContentType("text/html");
  response.setHeader("refresh", "5");
  //设置要求浏览器 
  /* response.sendRedirect("Servlet1"); */
  int i=(int)(Math.random()*900000+100000);
  int a=(int)(Math.random()*9000+1000);
  int c=(int)(Math.random()*900+100);
  System.out.println("@@@@"+(new Random().nextInt(900000)+100000));
  /*
   * 设置随机
   */
  System.out.println(new Random().nextInt(100));
  System.out.println(Math.random());
  PrintWriter  pw =response.getWriter();
  pw.print("你的支付宝到账1000万元,需要的码号为:<h1 style='color:red ;background-color:green'>"+i+"</h1>,打死也不说  \"<hr>\";");
  pw.print("你的QQ到账1000万元,需要的码号为:<h2 style='color:red ;background-color:green'>"+c+"</h2>,打死也不说  \"<hr>\";");
  pw.print("你的微信到账1000万元,需要的码号为:<span style='color:green'>"+a+"</span>,打死也不说"); 
  pw.print("你的手机支付宝到账1000万<span style='color :red'>"+i+"</span>");

用法四 response.sendRedirect("Servlet2");重定向

重定向:属于浏览器的跳转.超链接

浏览地址发生改变

重定向为二次请求。

重定向可以访问不同服务器的跳转。


相关文章
|
9月前
|
Java
欢迎来到Jsp编程课时六——EL表达式(JSP第十五课时)
欢迎来到Jsp编程课时六——EL表达式(JSP第十五课时)
80 0
|
9月前
|
Java
欢迎来到Jsp编程课时十——Servlect+Jsp基础回顾。(二)
欢迎来到Jsp编程课时十——Servlect+Jsp基础回顾。(二)
49 0
|
9月前
|
前端开发 JavaScript Java
欢迎来到Jsp编程课时十——Servlect+Jsp基础回顾。(三)
欢迎来到Jsp编程课时十——Servlect+Jsp基础回顾。(三)
97 0
|
9月前
|
Java
欢迎来到Jsp编程课时十——Servlect+Jsp基础回顾。(一)
欢迎来到Jsp编程课时十——Servlect+Jsp基础回顾。(一)
35 0
|
9月前
|
Java 对象存储
2022年Servlect第十九课——案例实战
2022年Servlect第十九课——案例实战
32 0
|
存储
2022年Servlect课时十五——Servlect 56天的学习总结。(二)
2022年Servlect课时十五——Servlect 56天的学习总结。
90 0
|
网络协议 Java
2022年课时一:Servlect
2022年课时一:Servlect
58 0
2022年课时一:Servlect
|
Java 应用服务中间件 容器
2022年Servlect课时0
2022年Servlect课时0
174 0
|
存储 Java 应用服务中间件
2022年课时三Servlect 知识的回顾
2022年课时三Servlect 知识的回顾
74 0
2022年课时十——两个小项目实战(Servlect常用对象)
2022年课时十——两个小项目实战(Servlect常用对象)
61 0
2022年课时十——两个小项目实战(Servlect常用对象)