博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet_抛开框架,还原本质
阅读量:7297 次
发布时间:2019-06-30

本文共 3685 字,大约阅读时间需要 12 分钟。

hot3.png

   servlet是什么?

   :

servlet 是在服务器上运行的小程序。这个词是在 Java applet 的环境中创造的

看着有点绕,个人认为servlet是java对rfc2616协议的封装,既是http协议的java封装.一个java类

根据红薯的文章,在myeclipse下测试,

1,新建web project;

2,xml添加servelt配置:

    
  
ServletTest
  
TestS
  
    
  
ServletTest
  
/ServletTest
  
  

凡符合url-pattern中/ServletTest的请求,转由servlet-class对应的类TestS处理

servlet下servlet-name和servlet-mapping下servlet-name必须相同

3,TestS类:

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TestS extends HttpServlet {	@Override	protected void doGet(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		// TODO Auto-generated method stub		//super.doGet(req, resp);		resp.setContentType("text/html;charset=utf-8");		PrintWriter out = resp.getWriter();		out.print("你好,HELLO");		out.close();	}	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		// TODO Auto-generated method stub		super.doPost(req, resp);	}}

开启tomcat,访问

页面返回:

你好,HELLO

filter:

web.xml中servlet前添加:

        
helloFilter
        
HelloFilter
    
     
        
helloFilter
        
/*
    

创建HelloFilter.java文件

import java.io.IOException;import javafx.collections.ListChangeListener.Change;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 HelloFilter implements Filter {	public void destroy() {		// TODO Auto-generated method stub		System.out.println("destory filter");	}	public void doFilter(ServletRequest arg0, ServletResponse arg1,			FilterChain arg2) throws IOException, ServletException {		// TODO Auto-generated method stub		System.out.println("do filter");		//arg2.doFilter(arg0, arg1);	}	public void init(FilterConfig arg0) throws ServletException {		// TODO Auto-generated method stub		System.out.println("init filter");	}}

重启tomcat,

控制台在启动tomcat过程打印:init filter

控制台在关闭tomcat过程打印:destory filter

通过浏览器访问,页面没有任何输出,http请求被过滤器拦截,(这也就是过滤器的含义,过滤器也拦截操作HttpServletRequest和HttpServletResponse)控制台打印:do filter

反注释//arg2.doFilter(arg0, arg1);

通过浏览器访问,页面输出"你好,HELLO",http请求被过滤器拦截控制台打印:do filter

----------------------分割线-----------------------------------

修改HelloServlet类,

dopost方法内部调用doget,

doget方法内部同时调用dopost,代码如下:

package demo;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet {	@Override	protected void doGet(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		// TODO Auto-generated method stub		resp.setContentType("text/html;charset=utf-8");		PrintWriter out = resp.getWriter();		out.print("你好,HELLO");		out.close();		System.out.println("doGet function execute!");		this.doPost(req, resp);	}	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		// TODO Auto-generated method stub		this.doGet(req, resp);	}	}

做个死循环,是否会报错?测试下哈:

访问正常,控制台打印:"do filter",页面正常显示"你好,HELLO",

意料之外的是控制台没有打印"doGet function execute!",死循环也不产生作用,没有报错.

转载于:https://my.oschina.net/u/856051/blog/385274

你可能感兴趣的文章
JQuery读书笔记--JQuery-Form中的AjaxForm和AjaxSubmit的区别
查看>>
如何判断java程序是从class启动还是从jar启动的?
查看>>
Django实现组合搜索的方法示例
查看>>
PV公式
查看>>
centos 安装hue 4.0
查看>>
关于字符指针和字符数组初始化的问题
查看>>
Vue(五)Vue规范
查看>>
Python.tornado.0
查看>>
转:在java中使用dom4j解析xml
查看>>
Shell基础-Bash变量-用户自定义变量
查看>>
forget word qz_out_b1
查看>>
memory prefix out omni,over,out,od,octa ~O
查看>>
android studio 安装步骤
查看>>
MSSQL扫盲系列(3)-SELECT
查看>>
设计模式趣说
查看>>
qwb与学姐 (带秩并查集)
查看>>
原来MAC地址还是要购买的
查看>>
将文本由行转为列
查看>>
记录selenium操作
查看>>
AC 自动机(模板)
查看>>