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");重定向
重定向:属于浏览器的跳转.超链接
浏览地址发生改变
重定向为二次请求。
重定向可以访问不同服务器的跳转。