第二十八节Servlet和内省

来源:互联网 发布:中兴视觉大数据怎么样 编辑:程序博客网 时间:2024/06/05 03:35

0.手工编写servlet
1.1 写一个类 实现Servlet接口
1.2 实现接口中的方法
1.3 配置servlet
1.4 访问
1 在Servlet中可以使用5个内置对象 request response httpsession [(application) servletContext] [(config) servletConfig]
2 Servlet乱码问题
3.1 response.setContentType(“text/html;charset=utf-8”);
3.2 response.setCharacterEncoding(“utf-8”);
3 除了GET和POST请求之外 还有什么请求方式
head delete options put trace
4 HTTP协议 —>数据格式
1请求报文
2响应报文
5 ServletConfig接口中 的方法
getServletName();获取Servlet名称 在web.xml文件中配置的名称
getServletContext(); 获取Servlet上下文 实际就是application

servlet是服务器端运行的Java程序,可以接受客户端请求并做出响应(servlet运行于服务器端)
继承HTTPServlet 类 或者 Servlet接口
对于如下的一些映射关系:
Servlet1 映射到 /abc/*
Servlet2 映射到 /*
Servlet3 映射到 /abc
Servlet4 映射到 *.do

问题:一般都是面试题会问
当请求URL为“/abc/a.html”,“/abc/”和“/”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。
当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应
Servlet引擎将调用Servlet3。
当请求URL为“/abc/a.do”时,“/abc/”和“.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。
当请求URL为“/a.do”时,“/”和“.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。
当请求URL为“/xxx/yyy/a.do”时,“/”和“.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。
获取上下文 this,getServletContext()
获取config this.getServletConfig()
1 JSP的out对象和getWriter()方法的区别?
(1) out和response.getWriter的类不一样,一个是JspWriter,另一个是java.io.PrintWriter
(2)执行原理不同 ,out 输出数据是先放入一个缓存区,只有flush后才会进入response的缓存区,而 getWrite()是直接写入response缓存区,
页面执行完毕,所有数据都写入response的缓存区,然后交给web容器,由web容器决定是否输出给客户端。
(3) out的print()方法和println()方法在缓冲区溢出并且没有自动刷新时候会产生IOException,
response.getWrite()方法的print和println中都是抑制 IOException异常的,不会有IOException
容器会先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。
注意:目录匹配不能和扩展名匹配同时存在

内省
为什么要使用内省?开发框架时,经常要使用java对象属性来封装数据,如果使用反射来操作太麻烦,所以sun 公司开发了一套api来专门的操作java对象的属性
以前咱们写的都是private String name 这种都叫做字段
属性:类中有 setXxx(有参数) 或者 getXxx 方法 ,我们就说类中有一个 xxx(把get或set去掉 把第一个字母变成小写)属性
访问javabean的属性的两种方式
1.直接使用bean的setXxx或getXxx方法
2.通过内省技术访问(java.beans包提供了内省的api),内省技术访问也提供了两种方式
a通过PropertyDescriptor类操作Bean的属性
getWriterMethod —-setXXXX
getReadMethod—–getXXX
BeanInfo beanInfo=Introspector.getBeanInfo(Person.class);
b通过Introspector类获得Bean对象的BeanInfo ,然后通过BeanInfo来获取属性的描述器,通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后通过反射机制来调用这些方法

原创粉丝点击