Servlect对象总结(笔记内容八)

2022年2月6号总结上学期。思维导图加上第一模块Servlect常看到的一些对象的总结。

思维导图 

Servlect对象总结(笔记内容八)_第1张图片


上面是学习模块的划分的思维导图。

Servlect对象总结(笔记内容八)_第2张图片

 Servlect对象总结(笔记内容八)_第3张图片

 Servlect对象总结(笔记内容八)_第4张图片

 Servlect对象总结(笔记内容八)_第5张图片

 Servlect对象总结(笔记内容八)_第6张图片

Servlect对象总结(笔记内容八)_第7张图片

Servlect对象总结(笔记内容八)_第8张图片

 Servlect对象总结(笔记内容八)_第9张图片

Servlect对象总结(笔记内容八)_第10张图片

 Servlect对象总结(笔记内容八)_第11张图片

Servlect对象总结(笔记内容八)_第12张图片

Servlect对象总结(笔记内容八)_第13张图片

 Servlect对象总结(笔记内容八)_第14张图片

Servlect对象总结(笔记内容八)_第15张图片

 Servlect对象总结(笔记内容八)_第16张图片

Servlect对象总结(笔记内容八)_第17张图片

 Servlect对象总结(笔记内容八)_第18张图片

Servlect对象总结(笔记内容八)_第19张图片

Servlect对象总结(笔记内容八)_第20张图片

Servlect对象总结(笔记内容八)_第21张图片

Servlect对象总结(笔记内容八)_第22张图片


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

Servlect对象总结(笔记内容八)_第23张图片

Servlect对象总结(笔记内容八)_第24张图片

Servlect对象总结(笔记内容八)_第25张图片 

Servlect对象总结(笔记内容八)_第26张图片 

Servlect对象总结(笔记内容八)_第27张图片 

 

 

Servlect对象总结(笔记内容八)_第28张图片

 Servlect对象总结(笔记内容八)_第29张图片

 

Servlect对象总结(笔记内容八)_第30张图片

Servlect对象总结(笔记内容八)_第31张图片

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

Servlect对象总结(笔记内容八)_第32张图片


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


Servlect对象总结(笔记内容八)_第33张图片


 代码模块

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;
/**
 *
 * @author MZFAITHDREAM
 * Servlect的介绍
 * **它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。**

**使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。**
 * 
 *
 */
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;

/**
 * Servlet implementation class Servlect2
 */
@WebServlet("/BBB")
public class Servlect2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    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销毁数据");
}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	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

"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ 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; /** * Servlet implementation class Servlect3 */ @WebServlet("/CCC") public class Servlect3 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlect3() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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

"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ 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; /** * Servlet implementation class Servlect2 */ @WebServlet("/DDD") public class Servlect4 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ 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销毁数据"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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

"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 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.util.Enumeration;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
 * 2022/1/29号
 * 本案例要讲述的是Servlect的生命周期,了解Servlect的运行周期如何运行的.
 * @author MZFAITHDREAM
 *
 */

//第一个问题。请自己解释  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;

/**
 * Servlet implementation class TwoServlect
 */

/**
 * 2022/1/29
 * Servlect快速生成的的方法
 * @author MZFAITHDREAM
 *
 */
//问题一下面的俩行代码等价于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;  
    /**
     * @see HttpServlet#HttpServlet()
     */
    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);
    	
    	}
    	
    	
   
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	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;
/**
/**
 * Servlet implementation class Servlet1
 */
@WebServlet(urlPatterns = "/C",initParams = {
		//增加静态数据的第一个学生
		@WebInitParam(name="a",value="我是获取静态数据的方式")
		
})
/**
 * 2022/1/29
 * 回顾获取静态数据和学习动态数据的方式
 * @author MZFAITHDREAM
 * Servlect对象三	response,将信息发送给浏览器。
 * 思考问题。在Servlect中如何共享数据?
 *
 */
public class TreeServlect extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    @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+"


"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 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 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; /** * Servlet implementation class Servlet4 */ @WebServlet("/D") public class FourServlect extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() * 由个人共享出来的动态数据 */ public FourServlect() { super(); // TODO Auto-generated constructor stub } /** * 创建对象 ServletContext sc=getServletContext();获取对象 * sc.setAttribute("pq", "排球"); 接收对象 * 删除对象 sc.removeAttribute("pq"); * * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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+"

"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 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.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; /** * Servlet implementation class Servlet1 */ @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; /** * Default constructor. */ public FiveServlect() { // TODO Auto-generated constructor stub System.out.println(" Servlet6() Servlet6() Servlet6()"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ @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"); */ 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:"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Web.Servlect.Servlect; /** * 对象四request,将浏览器中的数据发送给服务器。 */ 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; /** * Servlet implementation class Servlet1 */ @WebServlet("/AA") public class RequestServlect extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public RequestServlect() { super(); System.out.println("Servlet1 在运行HttpServletRequest 的方法"); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 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.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; /** * Servlet implementation class Servlet2 */ /** * response获取浏览器的数据 * @author MZFAITHDREAM * */ @WebServlet("/BB") public class RequestServlect2 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public RequestServlect2() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 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 javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Servlet3 */ @WebServlet("/CC") public class RequestServlect3 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public RequestServlect3() { super(); System.out.println(" 开始Servlet3() 运行中request.setAttribute(\"apple\", \"苹果\");"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 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; /** * Servlet implementation class Servlet4 */ @WebServlet("/RequestServlect4") public class RequestServlect4 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public RequestServlect4() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ 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+"

"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ 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;

/**
 * Servlet Filter implementation class MyFilter1
 */
//你要阻止的Servlect,/*拦截所有的内容。
@WebFilter("/Servlect2")
/**
 * 过滤器的讲解
 * @author MZFAITHDREAM
 *
 */

public class MyFilter1 implements Filter {

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

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

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	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;

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

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

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	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);
		
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	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;

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

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

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	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);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	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所有方法运行完毕后销毁过滤器");
		
		
	}

}


项目视图展示。

Servlect对象总结(笔记内容八)_第34张图片

Servlect对象总结(笔记内容八)_第35张图片

Servlect对象总结(笔记内容八)_第36张图片

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

Servlect对象总结(笔记内容八)_第37张图片

Servlect对象总结(笔记内容八)_第38张图片

Servlect对象总结(笔记内容八)_第39张图片 Servlect对象总结(笔记内容八)_第40张图片

Servlect对象总结(笔记内容八)_第41张图片 Servlect对象总结(笔记内容八)_第42张图片

Servlect对象总结(笔记内容八)_第43张图片

 Servlect对象总结(笔记内容八)_第44张图片

 Servlect对象总结(笔记内容八)_第45张图片

Servlect对象总结(笔记内容八)_第46张图片

Servlect总结的一些概念

第一部分.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的方法

 

Servlect对象总结(笔记内容八)_第47张图片

 

你可能感兴趣的:(SSMS,笔记回忆录,p2p,linq,gnu)