2022年1月30号总结上学期你所学的第一模块Servlect常看到的一些对象。

2022年1月30号总结上学期你所学的第一模块Servlect常看到的一些对象。,第1张

2022年1月30号总结上学期你所学的第一模块Servlect常看到的一些对象。 第0部分进入本博客的浏览目录。

目录

第0部分进入本博客的浏览目录。

第一部分进入浏览页面的知识的回顾。

第二部分进入学习要点的解说。

第三部分进入页面代码的实 *** 与视图的展示。

 代码模块

项目视图展示。

localhost:8080/AAAcom.Web.Servlect/BB?name=胡滨&age=23&phone=13765524387&qq=123456&wexing=123&hobby=看书&hobby=打游戏

第四部分对一些重要内容笔记的回顾。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2 Servlet优势。性能明显更好。

Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求

Servlet 是独立于平台的,因为它们是用 Java 编写的。

服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。

Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

.(java css html mysql jquery )3 Servlet 任务。读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

1_3Servlect书写的三种形式。

public class oneServlet implements Servlet  {}//采用的是接口public class TwoServlet  extends GenericServlet {}//采用的是继承public class ThreeServlet  extends HttpServlet{}//采用的是继承 理解什么是get 和 post的请求方式。

1_4Servlect的生命周期。Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

Servlet 抽象方法Servlet 初始化后调用 init () 方法。

Servlet 调用 service() 方法来处理客户端的请求。

Servlet 销毁前调用 destroy() 方法。

最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

1_5Servlet 方法介绍init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时

A_1对象ServletConfig对象,用途获取静态数据的俩种方式。

A_2对象 ServletContext对象。1:用途:获取共享静态数据,获取共享动态数据,获取共享文件数据.这个对象与我之后所讲的JSP四大域有关

A_3对象: Response 对象。HttpServlet调用HttpResponse的有关方法,生成响应数据:1:用途一:将数据发送给浏览器。2:用途二生成图片的下载3:用途三生成随机数4:用途四 response.sendRedirect("Servlet2");重定向重定向:属于浏览器的跳转.超链接浏览地址发生改变重定向为二次请求。重定向可以访问不同服务器的跳转。

A_4 HttpServletRequest对象。HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息HttpResponse一些用法这个对象与我之后所讲的JSP四大域有关1: 主要:将浏览器的数据发送给服务器。2:个用途 请求转发request.getRequestDispatcher("Servlet4") .forward(request, response);请求转发和重定向区别:重定向跳转浏览器地址会发生变化,请求转发浏览器地址不会发生变化重定向是两次请求,请求转发是一次请求重定向属于浏览器跳转,请求转发属于服务器内部跳转重定向跳转页面是不能发送数据,请求转发是可以携带数据的1.请求转发是在服务器完成的,重定向是在浏览器完成的2.请求转发的速度快,重定向速度慢3.请求转发的是同一次请求,重定向是二次不同的请求4.请求转发地址栏没有变化,重定向地址栏有变化5.转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成的

个人总结:从上面图片过程可以看出:当Servlect与Filter同时创建时,运行服务器首先调用的是Filter中。MyFilter():构造方法<()方法:加载数据。当我改下内容在刷新时你会发现服务器运行以下方法1>

1-2 第二部分观察Servlect与Filter在web.xml注册的相似



第一部分进入浏览页面的知识的回顾。               第二部分进入学习要点的解说。
第三部分进入页面代码的实 *** 与视图的展示。

 代码模块
package comServlectF;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Servlect1  implements Servlet{

	public Servlect1() {
		// TODO Auto-generated constructor stub
		System.out.println("这是ServlectA的构造方法");
	}
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("改程序运行完毕后销毁ServlectA");
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		System.out.println("ServlectA ServletConfig方法");
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		System.out.println(" ServletAgetServletInfo方法");
		return null;
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("该程序应用的ServletAinit方法");
		
	}

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("这是ServlectA的servlect的方法");
		
	}

}







package comServlectF;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/BBB")
public class Servlect2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public Servlect2() {
        super();
        System.out.println("这是Servlect2的抽象方法");
        // TODO Auto-generated constructor stub
    }
    @Override
    public void init() throws ServletException {
    	// TODO Auto-generated method stub
    	System.out.println("Servlect2加载数据");
    	super.init();
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	// TODO Auto-generated method stub
    	System.out.println("这里开始运行Servlect的方法");
    	super.service(req, resp);
    }
    @Override
    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	// TODO Auto-generated method stub
    	super.doDelete(req, resp);
    	System.out.println("Servlect2的删除方法");
    }
   @Override
   	public void destroy() {
	// TODO Auto-generated method stub
	super.destroy();
	System.out.println("Servlect2销毁数据");
}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	//response.getWriter().append("Served at: ").append(request.getContextPath());
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		PrintWriter pw =response.getWriter();
		pw.print("我是第二个servlect2");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}






package comServlectF;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/CCC")
public class Servlect3 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public Servlect3() {
        super();
        // TODO Auto-generated constructor stub
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		PrintWriter pw =response.getWriter();
		pw.print("我是第三个servlect3");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}




package comServlectF;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/DDD")
public class Servlect4 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public Servlect4() {
        super();
        System.out.println("这第四个Servlect4的抽象方法");
        // TODO Auto-generated constructor stub
    }
    @Override
    public void init() throws ServletException {
    	// TODO Auto-generated method stub
    	System.out.println("Servlect4加载数据");
    	super.init();
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	// TODO Auto-generated method stub
    	System.out.println("这里开始运行Servlect4的方法");
    	super.service(req, resp);
    }
    @Override
    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	// TODO Auto-generated method stub
    	super.doDelete(req, resp);
    	System.out.println("Servlect4的删除方法");
    }
   @Override
   	public void destroy() {
	// TODO Auto-generated method stub
	super.destroy();
	System.out.println("Servlect4销毁数据");
}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	//response.getWriter().append("Served at: ").append(request.getContextPath());
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		PrintWriter pw =response.getWriter();
		pw.print("我是第一个servlect4");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}


package com.Web.Servlect.Servlect;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


//第一个问题。请自己解释  implements  是接口 还是继承?
//第二个问题。Servlect的常用的那些方法。
//第三个问题。Servlect的运行周期如何运转的。
//第四个问题。请思考web.xml文件中的静态数据用什么对象获取到。
public class oneServlect  implements Servlet{

	public oneServlect() {
		// TODO Auto-generated constructor stub
		System.out.println("OneServlet的抽象方法");
	}
		
	
		
	@Override
	public void destroy() {
		System.err.println("OneServlet释放内存的方法内容");
	}

	@Override
	public ServletConfig getServletConfig() {
		System.out.println("获得静态数据的方法");
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		System.out.println("getServletInfo() 的 Servlect的方法内容");
		return null;
	}

	@Override
//	第一种方式获得静态数据
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("在web.xml文件中获取静态数据的方式");
		
		String a=config.getInitParameter("home");
		String b=config.getInitParameter("money");
		String c=config.getInitParameter("h");
		String d=config.getInitParameter("a");
		System.out.println(a+"==========="+b+"899"+c);
		System.out.println(d+"我已成功获得了静态数据的内容");
		
		//如果有多个静态数据,为避免执行重复的代码采用下面的方式获取
	Enumeration	e=config.getInitParameterNames();
	while (e.hasMoreElements()) {
		String key = (String) e.nextElement(); //home money
		String value =config.getInitParameter(key); //值一
		System.out.println(key+"@@@@"+value);
		
	}
	
		
	}
		


	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//等待浏览器访问
		System.out.println("servlect处于运行状态");
		
		
	}

}



package com.Web.Servlect.Servlect;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
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;




//问题一下面的俩行代码等价于web.xml文件中的那些代码。
@WebServlet(urlPatterns = "/B",initParams = {
		@WebInitParam(name="name",value="学生名称张三"),
		@WebInitParam(name="age",value="学生年龄20岁"),
})
public class TwoServlect extends HttpServlet {
	private static final long serialVersionUID = 1L;  
    
    public TwoServlect() {
      System.out.println("构造方法");
      
    }
    
    @Override
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
    	// TODO Auto-generated method stub
    System.out.println("Servlect的方法");
    }

    	@Override
    	public void init(ServletConfig config) throws ServletException {
    		// TODO Auto-generated method stub
    	System.out.println("请用init的方法完成存放二个数据并存放起来构造");
    	String aa=config.getInitParameter("name");
      	String bb=config.getInitParameter("age");
      	System.out.println(aa+"===="+bb);
    	
    	}
    	
    	
   
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

	
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("Servlect的销毁方法");
	}
	
	
}


package com.Web.Servlect.Servlect;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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;

@WebServlet(urlPatterns = "/C",initParams = {
		//增加静态数据的第一个学生
		@WebInitParam(name="a",value="我是获取静态数据的方式")
		
})

public class TreeServlect extends HttpServlet {
	private static final long serialVersionUID = 1L;

    
    public TreeServlect() {
        // TODO Auto-generated constructor stub
    }

	
    @Override
    public void init() throws ServletException {
    	// TODO Auto-generated method stub
    	super.init();
    	//定义4个静态数据
    	ServletConfig config=getServletConfig();
    	String a=config.getInitParameter("a");
    	System.out.println(a);
    }
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置 发送给浏览器的文本信息HTML文本格式
		//response.setContentType("text/html");
		response.setContentType("text/html");
		//设置发送给浏览器文本utf-8
		//response.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		//因为浏览器是使用get请求
		//所以Servlet do-get
		//servlet1相打篮球
		//1获取ServletContext对象
		ServletContext  sc=getServletContext();
		//获取web.xml文件中的镜头数据
		String a=sc.getInitParameter("lq");
		String c= (String) sc.getInitParameter("dt");
		//获得servlet4共享的排球
		String b= (String) sc.getAttribute("pq");
		String d= (String) sc.getAttribute("as");
		String e= (String) sc.getAttribute("gx");
		
		//删除排球
		sc.removeAttribute("pq");
		//给浏览器发送数据
		response.getWriter().append("Servlet1获得静态数据用来访问lq:"+a+"
"); response.getWriter().append("Servlet1获得静态数据用来访问dt:"+c+"
"); response.getWriter().append("response.getWriter().append方法打印内容"); response.getWriter().append("Servlet4获得动态态数据用来访问pq:"+b+"
"); response.getWriter().append("Servlet4获得动态态数据用来访问as:"+d+"
"); response.getWriter().append("Servlet4获得动态态数据用来访问as:"+e+"
"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Web.Servlect.Servlect; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/D") public class FourServlect extends HttpServlet { private static final long serialVersionUID = 1L; public FourServlect() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //servlet4共享班级 共享数据 //共享动态数据 response.setContentType("text/html"); //设置发送给浏览器文本utf-8 //response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); //获取ServletContext 对象 ServletContext sc=getServletContext(); //将排球共享数据 setAttribute方法共享数据。 //在java中object是任何数据类型的父类。 //身份的多种类型;向上转型 sc.setAttribute("pq", "我是共享的数据内容排球"); sc.setAttribute("as", "我是共享的数据as采用的是setAttribut获得"); sc.setAttribute("gx", "我是在Servlect中共享的数据gx采用的是setAttribut获得"); //身份的多种类型;向上转型(强制转型) //获得动态数据 //疯狂java讲义 //getimitParameter只能获得静态数据 String aa= (String) sc.getAttribute("pq"); String bb= (String) sc.getAttribute("as"); String cc= (String) sc.getAttribute("gx"); //对象三 response对象将数据发送给浏览器 response.getWriter().append("获得本页面的动态数据 "+aa+""); response.getWriter().append("获得本页面的动态数据 "+bb+""); response.getWriter().append("获得本页面的动态数据 "+cc+""); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Web.Servlect.Servlect; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; 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; @WebServlet(urlPatterns = "/E",initParams = { //增加静态数据的第一个学生 @WebInitParam(name="a",value="胡二伤悲"), @WebInitParam(name="age",value="40岁"), @WebInitParam(name="height",value="169cm"), @WebInitParam(name="weight",value="60kg") }) public class FiveServlect extends HttpServlet { private static final long serialVersionUID = 1L; public FiveServlect() { // TODO Auto-generated constructor stub System.out.println(" Servlet6() Servlet6() Servlet6()"); } @Override public void init() throws ServletException { // TODO Auto-generated method stub super.init(); //定义4个静态数据 ServletConfig config=getServletConfig(); String a=config.getInitParameter("a"); String b=config.getInitParameter("age"); String c=config.getInitParameter("height"); String e=config.getInitParameter("weight"); System.out.println(a+"===="+b+"#######"+c+"-----"+e); System.out.println(e); System.out.println("创建静态数据的方法"); System.out.println("ServletConfig config=getServletConfig();"); System.out.println("访问静态数据的方法"); System.out.println("String a=config.getInitParameter("a");"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); // 获得text.txt完整路径 ServletContext sc=getServletContext(); //指定文件名称获取完整路径 String path=sc.getRealPath("text.txt"); //控制台打印输出文件完整路径 System.out.println(path); //将text.txt读取出来 //IO inputStream /outputStream输出流。 //网上下载的图片以自己为主场输入 //总结:始终以自己为主场,观察数据流向。 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:"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Web.Servlect.Servlect; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/AA") public class RequestServlect extends HttpServlet { private static final long serialVersionUID = 1L; public RequestServlect() { super(); System.out.println("Servlet1 在运行HttpServletRequest 的方法"); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得浏览器的请求,得到请求信息 //得到请求的URL地址 String a=request.getRequestURL().toString(); System.out.println(a); //得到请求的数据 String b=request.getRequestURI(); System.out.println(b); //得到请求的URL地址中附带的参数 String c=request.getQueryString(); System.out.println(c); //得到来访者的IP地址 String d=request.getRemoteAddr(); System.out.println(d); //来访者的主机名 String e=request.getRemoteHost(); System.out.println(e); //来访者的端口号 int f=request.getRemotePort(); System.out.println(f); //得到请求URL地址时使用的方法(重要) String h=request.getMethod(); System.out.println(h); //获取WEB服务器的IP地址 String l=request.getLocalAddr(); System.out.println(l); //获取WEB服务器的主机名 String n=request.getLocalName(); System.out.println(n); //获取WEB服务器的端口号 int m=request.getLocalPort(); System.out.println(m); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Web.Servlect.Servlect; import java.io.IOException; import java.util.Arrays; import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/BB") public class RequestServlect2 extends HttpServlet { private static final long serialVersionUID = 1L; public RequestServlect2() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得浏览器发送过来的姓名和年龄的数据 String a=request.getParameter("name"); String b=request.getParameter("age"); String c=request.getParameter("phone"); String d=request.getParameter("QQ"); String e=request.getParameter("wexing"); System.out.println("获得浏览器发送给Servlet的数据为:"+a+"--"+b+"--"+c); //当浏览器发送的数据是同一个名称多个不同的数据 //servlet需要使用以下这个方法去接收这种数据 String[] ss=request.getParameterValues("hobby"); System.out.println(Arrays.toString(ss)); //tomcat服务器的编码格式是:ISO-8859-1 //注意:servlet获得浏览器表单发送的数据时, //获得的名称一定要和表单上文本框定义的name属性中的名称保持一致 //当浏览器发送大量数据给servlet的时候 //如果使用getParameter一个个获得,效率太慢 //使用以下方法可以节省代码,加快开发速度 Enumeration e1= request.getParameterNames(); while (e1.hasMoreElements()) { //循环获得的是浏览器发给servlet的数据的名称 String name=e1.nextElement(); if (name.equals("hobby")) { String[] str=request.getParameterValues(name); System.out.println(name+":"+Arrays.toString(str)); }else { String value=request.getParameter(name); System.out.println(name+":"+value); } } //使用Map集合获得浏览器发送的所有数据 Map map=request.getParameterMap(); for (Entry entry : map.entrySet()) { String name=entry.getKey(); String[] values=entry.getValue(); System.out.println(name+"%"+Arrays.toString(values)); } System.out.println("运行完成"); System.out.println("http://localhost:8080/Day06-2/Servlet2?name=hubinjkf&age=23&phone=16745637856&qq=2675648967&wexing=16745679076&hobby=%E7%9C%8B%E4%B9%A6&hobby=%E7%9C%8B%E5%B0%8F%E5%AD%A6%E5%A6%B9&hobby=%E5%AD%A6%E4%B9%A0mysql"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Web.Servlect.Servlect; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/CC") public class RequestServlect3 extends HttpServlet { private static final long serialVersionUID = 1L; public RequestServlect3() { super(); System.out.println(" 开始Servlet3() 运行中request.setAttribute("apple", "苹果");"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //当浏览器访问Servlet3的时候,Servlet3自己跳转到Servlet4, //由Servlet4回复消息给浏览器 request.setAttribute("apple", "苹果"); request.setAttribute("banner", "香蕉"); request.setAttribute("ma", "五十个一百万"); // 请求转发 request.getRequestDispatcher("RequestServlect4") .forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Web.Servlect.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/RequestServlect4") public class RequestServlect4 extends HttpServlet { private static final long serialVersionUID = 1L; public RequestServlect4() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter pw=response.getWriter(); String a=(String) request.getAttribute("apple"); String b=(String) request.getAttribute("banner"); String c =(String) request.getAttribute("ma"); pw.print("收到Servlet3的请求,回复消息给浏览器,任务已完成,获得Servlet3携带的数据为:"+a+""); pw.print("收到Servlet3的请求,回复消息给浏览器,任务已完成,获得Servlet3携带的数据为:"+b+""); pw.print("收到Servlet3的请求,回复消息给浏览器,任务已完成,获得Servlet3携带的数据为:"+c+""); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

package comMyFilter;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class MyFilter implements Filter{
	
	
	String a;
	String b;


	public MyFilter() {
		// TODO Auto-generated constructor
		System.out.println("我创建了第一个MyFilter过滤器");
	}
	

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
			response.setContentType("text/html");
			response.setCharacterEncoding("UTF-8");
		
			String name=request.getParameter("name");
			String psd=request.getParameter("psd");
			
			//比较拦截用户名和名码
			if(name.equals(a)&&psd.equals(b)) {
				chain.doFilter(request,response); 
				
			}else {
				OutputStream os=response.getOutputStream();
				os.write("用户名不在密码有误,属于非法用户".getBytes());
			}
			
					
			System.out.println("我是myfilter开始拦截请求地址哦哦");
			
			
			
		
		
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		// TODO Auto-generated method stub

		 a = config.getInitParameter("username");
		 b=config.getInitParameter("password");
		
		System.out.println("FilterConfig用来加载初始化数据");
	}
	
	@Override
	public void destroy() {
		System.out.println("Filter所有方法运行完毕后销毁过滤器");
		
		
	}

}



package comMyFilter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;


//你要阻止的Servlect,

public class MyFilter1 implements Filter {

    
    public MyFilter1() {
        // TODO Auto-generated constructor stub
    	System.out.println("构造方法");
    }

	
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("销毁数据");
	}

	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//		设置编码格式
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		System.out.println("我是myfilter1开始拦截请求地址哦哦");
		//实施访问
		chain.doFilter(request, response);
	}


	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("加载数据");
	}

}



package comMyFilter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;


@WebFilter("/BBB")
public class MyFilter2 implements Filter {

    
    public MyFilter2() {
        // TODO Auto-generated constructor stub
    }

	
	public void destroy() {
		// TODO Auto-generated method stub
	}

	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		System.out.println("我是myfilter2开始拦截请求地址哦哦");
		//实施访问
		chain.doFilter(request, response);
		
	}

	
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}




package comMyFilter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;


@WebFilter("/CCC")
public class MyFilter3 implements Filter {

    
    public MyFilter3() {
        // TODO Auto-generated constructor stub
    }

	
	public void destroy() {
		// TODO Auto-generated method stub
	}

	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here

		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		System.out.println("我是myfilter3开始拦截请求地址哦哦");
		//实施访问
		chain.doFilter(request, response);
	}

	
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}




package comMyFilter;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class MyFilter4 implements Filter{
	


	public MyFilter4() {
		// TODO Auto-generated constructor
		System.out.println("我创建了第一个MyFilter过滤器");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
			response.setContentType("text/html");
			response.setCharacterEncoding("UTF-8");	
			System.out.println("我是myfilter开始拦截请求地址哦哦");
		
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		// TODO Auto-generated method stub

		
		System.out.println("FilterConfig用来加载初始化数据");
	}
	
	@Override
	public void destroy() {
		System.out.println("Filter所有方法运行完毕后销毁过滤器");
		
		
	}

}


项目视图展示。

localhost:8080/AAAcom.Web.Servlect/BB?name=胡滨&age=23&phone=13765524387&qq=123456&wexing=123&hobby=看书&hobby=打游戏

 

 

 

 

第四部分对一些重要内容笔记的回顾。

第一部分.Servlect的介绍。
1_1什么是Servlect.
1 Servlet的简介。
它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。 2 Servlet优势。
性能明显更好。 Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。 Servlet 是独立于平台的,因为它们是用 Java 编写的。 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。 Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。 .(java css html mysql jquery )
3 Servlet 任务。
读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
1_3Servlect书写的三种形式。
  public class oneServlet implements Servlet  {}
//采用的是接口
public class TwoServlet  extends GenericServlet {}
//采用的是继承
public class ThreeServlet  extends HttpServlet{}
//采用的是继承 理解什么是get 和 post的请求方式。
1_4Servlect的生命周期。
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 抽象方法
Servlet 初始化后调用 init () 方法。 Servlet 调用 service() 方法来处理客户端的请求。 Servlet 销毁前调用 destroy() 方法。 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。 1_5Servlet 方法介绍
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。 service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。 destroy() 方法只会被调用一次,在 Servlet 生命周期结束时 A_1对象ServletConfig对象,用途获取静态数据的俩种方式。 A_2对象 ServletContext对象。
1:用途:获取共享静态数据,获取共享动态数据,获取共享文件数据.
这个对象与我之后所讲的JSP四大域有关 A_3对象: Response 对象。
HttpServlet调用HttpResponse的有关方法,生成响应数据:
1:用途一:将数据发送给浏览器。
2:用途二生成图片的下载
3:用途三生成随机数
4:用途四 response.sendRedirect("Servlet2");重定向
重定向:属于浏览器的跳转.超链接
浏览地址发生改变
重定向为二次请求。
重定向可以访问不同服务器的跳转。 A_4 HttpServletRequest对象。
HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息
HttpResponse一些用法
这个对象与我之后所讲的JSP四大域有关
1: 主要:将浏览器的数据发送给服务器。
2:个用途 请求转发
request.getRequestDispatcher("Servlet4") .forward(request, response);
请求转发和重定向区别:
重定向跳转浏览器地址会发生变化,
请求转发浏览器地址不会发生变化
重定向是两次请求,请求转发是一次请求
重定向属于浏览器跳转,请求转发属于服务器内部跳转
重定向跳转页面是不能发送数据,
请求转发是可以携带数据的
1.请求转发是在服务器完成的,重定向是在浏览器完成的
2.请求转发的速度快,重定向速度慢
3.请求转发的是同一次请求,重定向是二次不同的请求
4.请求转发地址栏没有变化,重定向地址栏有变化
5.转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成的
个人总结:从上面图片过程可以看出:当Servlect与Filter同时创建时,运行服务器首先调用的是Filter中。MyFilter():构造方法< 1 销毁数据
2 Filter所有方法运行完毕后销毁过滤器
3 构造方法
4 加载数据
5 我创建了第一个MyFilter过滤器
6 FilterConfig用来加载初始化数据
当我去运行ServlectA时服务器运行以下方法 
1 ServlectA的构造方法
2 ServletAinit方法
3 ServlectA的servlect的方法 1-2 第二部分观察Servlect与Filter在web.xml注册的相似
 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5716101.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存