0829

.java->.class->jvm->native code

高可靠高性能高并发

OSI会话模型

TLV接口 TLV(Type-Length-Value)是一种数据格式,通常用于数据通信和协议中。TLV具有以下三个主要部分:

Type(类型):表示数据的类型。Length(长度):表示数据的长度。Value(值):实际的数据。 TLV格式常常被用于嵌入式系统中,其中,Type字段标识了数据的性质,Length字段标识了数据的长度,Value字段则是实际的数据。 此外,某些情况下,TLV也用于网络协议的传输,比如DHCP协议的TLV就包括选项和值的定义,以及它们的具体内容。 需要注意的是,具体的TLV实现可能会因应用场景和需求而有所不同,因此具体的实现细节可能需要参考特定的文档或规范。

0831

线程不可能无限创建,受硬件和其他因素的影响 ThreadPool 线程池,创建公共资源。

new 运算慢,服务启动慢

set是唯一性集合 list是顺序性集合

老师给的java计算机代码示例讲解

继承描述”是“的关系 聚合描述”拥有“的关系

延迟初始化:不必要在构造函数中设置初值,此时还没有实例对象,可以在set方法中初始化

线程创建第一个语句wait() 通过继承Thread,并实现run方法,创建线程实例开始一个新线程。 然后notify()是唤醒wait()的方法。

wait和notify是Object的方法

synchronized同步 如果同步访问同一数据 对共享数据的保护 用锁机制

并发:事件的发生没有因果关系

Javax.servelet.http.*

public class HelloServelet extend HttpServelet(){

init();

还有一些其他的东西

//getServletInfo();很蠢

sedtory();

}

0905

命名规范 BEA公司 TLV结构

TLV(Type-Length-Value)是一种常用的用于通信的结构体格式。TLV由三个部分组成: Type(类型):表示数据的类型。 Length(长度):表示数据的长度。 Value(值):即数据本身。 这种结构的特点是,通过类型和长度可以确定值部分的数据结构,使得数据通信变得相对简单和标准化。同时,由于TLV结构具有嵌套性,可以用来包装协议的实现。

MIME类型

浏览器传输 Headers 回车换行*2 Content

tomcat lib放库 。jar webapp放web应用

java编译

javac -d . classpath c:\javaee\xxx.jar HelloServlet.java

-classpath <目录和 zip/jar 文件的类搜索路径> -d –describe-module <模块名称> 所有编译好的类放在classes文件夹下

-d指示编译后文件的放置位置

lib文件夹

URL=协议-主机地址-文件

子类不能抛出父类未声明的异常 NullPointerException 是运行时异常,可以通过编程的手段处理,是不会被检查,不被上面的约束限制。

0907

URL重写 Session Cookie

30 单位分钟(维持会话时间默认单位)

*HTTPSESSION

内存中的java必须序列化,不然存不进去 Srtvlet HttpServelt ServletRequest ServeltResponse HttpServletRequest HttpServletResponse ServeltConfig ServeltContext getServlrtConfig().getServletContext getServletContext() RequestDispatcher **forward(转发)**转发后不转发了 include转发后回来可以继续访问

RequestDispatcher的forward和include forward重点是产生两个不同的request,include一直只有一个request

log4j

void forward(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

void include(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

0919

java注释有三种注释

单行注释多行注释javadoc风格的注释

/**

上面有两个星号

@since 1.2

@version

@author

*/

Annotation注解 @Override - 重载方法 @Deprecated - 已过时

public @interface MyAnnotation {

int Value();//属性,要求加括号,但是它不是函数

// 任何注解必须有Value属性

}

考试: java.lang.reflect.Method java.land.Class java.lang.ClassLoader Servlet Jsp,JspPage Tag Filter

Class clazz = Student.class;

获取类

迭代会获取到类中所有public的方法

// for (Method method : clazz.getMethods()) {

System.out.println(method.toString());

// System.out.println(method.getName());

// }

也可获取某一个特定的方法,第一个参数是方法名,第二个参数是参数

Method getName = clazz.getMethod("getName",null);

// System.out.println(getName.toString());

System.out.println(getName.getName());

invoke执行了

System.out.println(getName.invoke(null, null));

getServletContext().log()

Enumeration(过时) Iterator 区别就是方法名

0921

默认情况下,只有来自客户端的请求会被过滤器拦截

dispatcher这个属性进行设置,不止客户端,换可以有转发等 REQUESTER PORWORD INCLUDE

@WebFilter

多Filtter顺序问题:

按从上到下顺序 url-Pattern 》 servlet-name

listener

事件处理模型 java.util.EventObject protected source : Object

getSource() :Object

edm 委托模型-事件处理模型 将事件交给听众

ServletContentListener

EventListener是空接口

public interface ServletContextListener extends EventListener {

void contextInitialized(ServletContextEvent var1);

void contextDestroyed(ServletContextEvent var1);

}

ServletContextEvent

本质还是EventObject的那一套,观察者模式

public class ServletContextEvent extends EventObject {

private static final long serialVersionUID = -7501701636134222423L;

public ServletContextEvent(ServletContext source) {

super(source);

}

public ServletContext getServletContext() {

return (ServletContext)super.getSource();

}

}

sec.setAttribute();

PageContext

JavaWeb一共四大域对象,Servlet可以用request,response,application。在JSP中可以用request,response,application,pagecontext。详细链接

ServletRequest HttpSession * sessionCreated()

在HttpSessionListener中找到了这个方法

public interface HttpSessionListener extends EventListener {

void sessionCreated(HttpSessionEvent var1);

void sessionDestroyed(HttpSessionEvent var1);

}

ServletContext

属性监听器都是有 添加 , 移除, 替代的三个方法。 ServletContextAttributeListener

public interface ServletContextAttributeListener extends EventListener {

void attributeAdded(ServletContextAttributeEvent var1);

void attributeRemoved(ServletContextAttributeEvent var1);

void attributeReplaced(ServletContextAttributeEvent var1);

}

HttpSessionAttributeListener

public interface HttpSessionAttributeListener extends EventListener {

void attributeAdded(HttpSessionBindingEvent var1);

void attributeRemoved(HttpSessionBindingEvent var1);

void attributeReplaced(HttpSessionBindingEvent var1);

}

HttpBoundEvent valueBound() valueUnbound()

public interface HttpSessionBindingListener extends EventListener {

default void valueBound(HttpSessionBindingEvent event) {

}

default void valueUnbound(HttpSessionBindingEvent event) {

}

}

set remove

注意:getValue()获取的是过去的值

实现ServletContextListener接口的两个方法,然后在web.xml中配置,监听器就可以正常运行了。

framework-框架 快速开发web应用的框架

模型是视图的听众 ——姜老师

0926

四个作用域 scope=“application/session/request等” application不适合网络,只适合一个人 request每次请求创建一个新的 参考

property=“*”适配所有进行属性设置,匹配字段名,有则设置

MVC2 降低粒度,进行拆分 Controller , DIspatch

Servlet public void service(ServletRequest req,ServletResponse res) throws ServletException ,IOExceptoin

Struts Action ActionForm ActionForword name= ,path=

URI进行转发,只是路由

0928

Action is an adapter

dispath uri,path uri:protocol,host,path

ActionForward execute(ActionMapping maipping,ActoinForm,HttpServletRequest,HttpServletResponse)

如何两个不同进程之间进行通信? 共享内存,socket

DispatchACtoin MappingDispatchAction path转发,parameter类名

LookupDispatchAction

i18n问题

Struts2

10月10日

戈培尔效应 谎言重复1000遍成为真理 Iaas,PaaS,SaaS Spring 是一个框架IOC框架 控制反转 容器负责建立,以前是由A控制B(A创建B),现在将A和B都交给容器。

Servlet s = (Servlet)Beans.instantiate(getClass().getClassLoader(),servletClass()) 动态实例化 在运行时创建对象 new.com.abc.servlet.HelloServlet()

xml称为元语言 创建语言的语言 meta

Java反编译 代码混淆 Google avaiator

@autowired

1012

download struts framework spring framework

/WEB-INF/lib

deploy front controller web.xml servlet, servlet-mapping *.do

```

config

/WEB-INF/struts/s.xml

```

struts2前端控制器使用filter,不使用servlet

app

/

spring 创建组件 根据id控制

ServletContextListener contextInitialized等两个方法

<>param-value

getServletConfig().getInitParameter("") : ServletConfig

getInitParamter() : servletContext

这是在xml中启用注解的代码

Action

所有参数都放在一个Map集合中

Controller处理函数返回数据

ModelAndViewModelModelMapMapviewStringvoid@ResponseBody Object

注意jsp视图技术 配置时会有前缀和后缀 只需返回文件名

Spring View 组件 ViewResolver Ordered接口

时序数据库

jms

1017

http component tomcat in

JMS java消息服务

public class Action{

ActionMapping mapping

ActionForm form.

HttpServeltRequest

HttpServletResponse

}

ActionForward execute(ActionMapping maipping,ActoinForm,HttpServletRequest,HttpServletResponse)

111

@TRANScational(propagation)

REQUEST

NEVER

参考

Spring不支持分布式事务,需要第三方支持 AromikTransactionsEssentials

所有电子邮件的父类 MimeMessage

Interface Message

消息服务器软件 kafks

Interface Destination 消息目的地

最后

jsp Implicit Object JSP隐式对象9个

JSPWriter out PageContext pa ServletContext 参考

jsp也可以部署

jspEL隐含对象

大多是Map集合,除了一个——pageContext

<%-- 注释 --%> <> Servlet Annoation

SpringControl相关注解 返回值

DispatchAction lookupDispatchAction

Fin

ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”); /要知道下面这条语句和上面的语句,二者有何不同?ApplicationContext ctx = new FileSystemXmlApplicationContext(“beans.xml”);

从类的上下文加载,一般在类的文件中,常常是不变的,故而在开发和测试环境中使用。

从文件系统中进行加载上下文,不受约束,可以改变xml文件,适用于生产环境。

附上官方的解释 ClassPathXmlApplicationContext: Useful for test harnesses as well as for application contexts embedded within JARs. 对测试框架和jars内的应用程序上下文有用 FileSystemXmlApplicationContext: Useful for test harnesses as well as for standalone environments. 对测试框架和标准环境有用

关于test harnesses的翻译与理解:(测试框架) http://www.51testing.com/html/51/10851-77900.html#:~:text=Test%20harnesses%20should%20include%20the%20following%20capabilities%3A%201,results.%204%20A%20standardized%20form%20of%20failure%20reporting.

如何获取ApplicationContext对象? 有一个接口Interface ApplicationContextAware 有一个方法void setApplicationContext(ApplicationContext applicationContext) 用于设置当前运行的对象的上下文

有一个类WebApplicationContextUtils 可以使用这个方法public static WebApplicationContext getWebApplicationContext(ServletContext sc) 获取当前根web应用程序上下文 但是这个并不是最好的方法,一般也不用,因为有更好更快捷的。

对于java程序,可以使用一个全局的静态方法来获取ApplicationContext。 一定记住默认的bean的scope属性是singleton。只有一个bean对象实例。

scope的值可以是singleton, prototype, request, session, application, 以及websocket。着重分析singleton和prototype的区别

singleton :【默认值】在spring IOC容器中仅存在一个bean实例,单例模式。适用于无状态的bean,如 工具类和服务类prototype :【原型】每次从容器中获取bean时都返回一个新的bean。即getBean()=new XXXBean()request : 每次HTTP请求都会创建一个bean,该作用域只适用于WebApplicationContextsession :在HTTP会话中创建一个bean,用于维持请求的状态,如用户会话。application :在整个web应用中创建一个全局的bean,用于存储全局配置数据等websocket : 在每个websocket中创建一个bean实例,用于通信。

如何在xml文件中声明使用注解的形式 在beans中间加上如下即可 这个之前我写的是错的 context:annotation-config/ mvc:annotation-driven/组件类可以通过哪些注解声明? @Controller @Service @Component @Repository

资料复习

异常分为几类,简单讲解一下。 java异常分为 运行时异常 和 编译时异常

运行时异常(RunTimeException)一般是程序员自己代码的问题,常见的有空指针异常(NullPointerException),除零产生的异常等。 编译时异常(CheckedException)是在编译阶段产生的异常,如关键字错误,括号不匹配等。

Servlet启动都经过哪些步骤? Servlet是javaee的服务模块,通常其生命周期如下: 无参构造函数-》init初始化-》service调用服务-》destory销毁 https://www.bilibili.com/video/BV1J34y1u7xw/?spm_id_from=333.1007.tianma.1-1-1.click这个网址的组成成分。 URI地址一般是由三部分构成:协议,域名,路径 对于上面的网址 https:代表使用https作为传输协议 www.bilibili.com:是域名 /video/BV1J34y1u7xw:是路径,在服务器中文件所在的位置(当然可能是虚假的)

?后面是向后端请求时的参数,以键值对的形式存在。

我们使用ServletResponse.setContextType(String)时可以有什么类型呢?

text/html text/plain text/xml

text/json application/json application/octet-stream

charset=utf-8

重定向(response.sendRedirect)和转发(RequestDispatcher.forword)的区别 重定向和转发都是跳转,但是转发是内部转发,而且可以携带参数,重定向则没限制,你可以跳转到任意的页面。 而且重定向相当于页面重新对重定向的页面发起了请求。

自己写的,觉得挺好舍不得删:重定向是一个新的开始,我的第一个请求返回响应,将页面重新定位到我指导的位置,在这期间,页面发送了两次request请求,一次是普通的http请求,一次是根据重定向的普通http请求,在用户看来,服务端发生重定向时我网址栏会变化的,response。sendRedirect 转发则与其有这不同,我将接收到的请求进行转发,意味着这是由该次请求进行的,并不由客户端主导,只有一个req请求,在这次转发中是共享客户端携带的参数的,或者说是可以进行参数的传递的,转发者一般是对前端所传数据的处理者,被准发者才是真正的执行者。RequestDispatcher.forword(req,resp)

servlet的5个函数,将其默写出来 hh无论何时我都会觉得这个很重要啊,后面有重复的 init service destory getServletInfo getServletConfig

void init(ServletConfig var1) throws ServletException

void service(ServletRequest var1,ServletResponse var2) throws ServletException,java.io.IOException

void destory()

String getServletInfo()

ServletConfig getServletConfig()

Servlet的xml配置基本结构 省略结束符号

hello

com.example.HelloServlet

hello

/hello/a.html

test

com.example.j2eetask5.filter.FilterChain

test

/*

com.example.j2eetask5.ListenerTest

HTTP的七种访问方法 GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE ServletContext 中getContextPath和getRealPath的区别 getContextPath获取到相对路径,并且可以使用虚拟路径。 getRealPath获取到绝对路径,相对于盘符的路径。(绝对路径) dis ?我想干什么 我已经洞悉了JSP9大内置对象的实质! 在javax.servlet.jsp.PageContext这个类中

public static final String PAGE = "javax.servlet.jsp.jspPage";

public static final String PAGECONTEXT = "javax.servlet.jsp.jspPageContext";

public static final String REQUEST = "javax.servlet.jsp.jspRequest";

public static final String RESPONSE = "javax.servlet.jsp.jspResponse";

public static final String CONFIG = "javax.servlet.jsp.jspConfig";

public static final String SESSION = "javax.servlet.jsp.jspSession";

public static final String OUT = "javax.servlet.jsp.jspOut";

public static final String APPLICATION = "javax.servlet.jsp.jspApplication";

public static final String EXCEPTION = "javax.servlet.jsp.jspException";

Servlet的五个函数

public interface Servlet {

void init(ServletConfig var1) throws ServletException;

ServletConfig getServletConfig();

void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

String getServletInfo();

void destroy();

}

参考链接

ServletConfig的函数

public interface ServletConfig {

String getServletName();

ServletContext getServletContext();

String getInitParameter(String var1);

Enumeration getInitParameterNames();

}

Java四大域对象 page request response application 参考 参考 PageContext

JavaWeb一共四大域对象,Servlet可以用request,response,application。在JSP中可以用request,response,application,pagecontext。详细链接

Controller处理函数返回数据

ModelAndViewModelModelMapMapviewStringvoid@ResponseBody Object

注意jsp视图技术 配置时会有前缀和后缀 只需返回文件名 filter接口和FilterChain接口

public interface Filter {

default void init(FilterConfig filterConfig) throws ServletException {

}

void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;

default void destroy() {

}

}

public interface FilterChain {

void doFilter(ServletRequest var1, ServletResponse var2) throws IOException, ServletException;

}

Spring Controller的8个返回数据

void 返回void可以直接进行重定向,如果没有重定向的话,那么-String -可以返回String,这个String是视图的逻辑名字,通过视图解析器解析为对应的物理视图地址。返回视图。ModuleModuleAndViewViewModuleMapMap@Response Object 返回JSON

javax.servlet.annotation的内容

重点先看WEBServlet,WEBListener,WEBFilter吧

填空题主要部分

竟然都是Struts的内容,且与分发有关,过时的技术也有学习的必要。 毕竟现在流行的技术框架或多或少的都借鉴过前人的思路。 现在也许看不出什么,等以后就会突然茅塞顿开。

DIspatchAction

分发有个函数

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response

)throws Exception

通常来说我们如果要实现简单的CRUD,可以对每一个操作都继承DispatchAction,但是会产生四个类,看起来非常不简洁美观。

我们可以将这些操作组合到一个类中,通过一些标识去决定使用什么方法。 我们这里使用Struts的配置函数,为每一个操作提供唯一标识。 在前端配置的唯一标识通过getParameter(mapping,form,request,response)``getMethodName(mapping,form,request,response,parameter)获取(先获取键,再获取值,在配置中是键值对的形式。 获取到后就可以根据反射机制来invoke执行一下了。

挺复杂,逻辑挺简单

LookupDispatchAction

修补上一个抽象类的缺陷 无法应对特殊字符(中文,空格等) 无法抱枕安全性,前端的提交即是实际的名称,URI暴露。 这里通过一个配置文件.properties进行键值对的映射,值当然可以是任何字符了。 同时前端的提交是键,也不会直接暴露实际名称。 在类的实际实现中利用一个HashMap做函数字典,put了键以及对应的函数名,这样也保证了对应的正确性。lookup查找也体现在这里

MappingDispatchAction

很简短,感觉没get到什么东西,好像是为一个后端控制器指定了多个路径?进行了聚合?

问题待解决

对于Fin.2.``如何获取ApplicationContext对象这一问题我需要在看看源码,在有网的时候看看。考虑和的关联,因为我之前在总结的时候把这两个总结到一起了。 估计是配置注解的xml项Fin.5我没有考虑到@Repository这的注解也可以用于声明组件类。需要找到用处。jsp的9个隐含对象到底是什么类?全是jsp吗?javaweb的四大域对象,究竟是什么类?EL语言中applicationScope隐含对象的类型弄明白URI和URL的区别!为什么HttpServletRequest的getRequestURI和getRequestURL的返回值不同?JSP还是得看一看啊。关于标记库描述符文件的内容需要了解一下关于Cookie类的相关信息ServletRequest为什么返回的是一个String,他有什么用? String getProtocol();web.xml中 的用处有什么呢?在spring-controller.txtRequestDispatcher看看官方的说明吧,虽然简单,但还是没有那么通透。HttpSession看看函数注释的看看那WebServlet,WebListener,WebFilter

解决

ApplicationContext是Springboot的IOC容器,有时候我们需要获取到该容器,一个方法就是实现ApplicationContextAware,它有个方法setApplicationContext可以获取到该容器。 参考 mvc:annotation-driven/用于MVC的注解开启,自动加载了一些类。 context:annotation-config/会为已经注册过的bean进行装配 所以对于MVC还是用的MVC的 @Respority和@Mapper很像,都是DAO层的注解,用于标识功能和便于识别。 不,你看下图 参考 在EL中提供了4个用于访问作用域范围的隐含对象,即pageScope、requestScope、sessionScope和applicationScope。应用这4个隐含对象指定所要查找的标识符的作用域后,系统 将不再按照默认的顺序(page、request、session以及application)来查找相应的标识符。 参考 创建一个 cookie,它是由 servlet 发送到 Web 浏览器、由浏览器保存、稍后发送回服务器的少量信息。Cookie 的值可以唯一标识客户端,因此 Cookie 通常用于会话管理。 建Cookie – HttpServletResponse.addCookie(Cookie) 获取Cookie – HttpServletRequest.getCookie() 描述,域名,最大过期时间,名,值,安全性,版本等getset方法 在ServletRequest中,getProtocol返回的是协议号 正如名字所示,获取协议,在一个网络请求中包括请求头和请求体,在请求头中有说明协议版本的字段。

一个说明字段是String很容易让人理解。 13. RqequestDispatcher 接受来自客户端的请求并将请求发送到服务器上任意位置 forward将请求从 Servlet 转发到服务器上的其他资源(Servlet、JSP 文件或 HTML 文件)。 include在响应中包含资源(servlet、JSP 页面、HTML 文件)的内容。 14. HttpSession 主要是getset Attribute的方法,还有获取时间相关,标识符等。 15. 注释

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface WebServlet {

String name() default "";servlet 的 name

String[] value() default {};servlet 的 URL 模式

String[] urlPatterns() default {};servlet 的 URL 模式

int loadOnStartup() default -1;servlet 的启动时加载顺序

WebInitParam[] initParams() default {};servlet初始化参数

boolean asyncSupported() default false;声明 Servlet 是否支持异步操作方式。

String smallIcon() default "";

String largeIcon() default "";

String description() default "";

String displayName() default "";Servlet 的显示名称

}

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface WebListener {

String value() default "";声明一个Listener

}

此注解用于声明 WebListener。任何使用 WebListener 批注的类都必须实现一个或多个 ServletContextListener、ServletContextAttributeListener、ServletRequestListener、ServletRequestAttributeListener、HttpSessionListener 或 HttpSessionAttributeListener 或 HttpSessionIdListener 接口。

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface WebFilter {

String description() default "";

String displayName() default "";

WebInitParam[] initParams() default {};

String filterName() default "";

String smallIcon() default "";

String largeIcon() default "";

String[] servletNames() default {};应用过滤器的 Servlet 的名称。

String[] value() default {};筛选器应用的 URL 模式 默认值为空数组。

String[] urlPatterns() default {};筛选器应用的 URL 模式 默认值为空数组。

DispatcherType[] dispatcherTypes() default应用过滤器的转发程序类型 {DispatcherType.REQUEST};

/* FORWARD,

INCLUDE,

REQUEST,

ASYNC,

ERROR;

*/

boolean asyncSupported() default false;

}

JSP简单学习

jsp是在html中嵌入java代码 jsp也是在j2ee服务端中的java组件

第一次运行

在第一次运行jsp代码时会经历以下步骤,将jsp转为java代码,将java代码转为class文件。 所以通常会比较慢,编译后就好多了。

四大作用域

requestsessionpageapplication

部署jsp

a

/a.jsp

jsp作为servlet的继承者,自然是可以部署的,但是一般不会这么做。

内嵌java语法

<%@ %>jsp指令的语法<%= %>jsp表达式的语法<%! %>jsp声明的语法<%-- --%>jsp注释的语法<% %>jsp中可以放置任何合法的java代码,其最终会被转换到service代码内。

jsp指令

<%@ page 属性列表%> 定义页面的依赖属性,如脚本语言,error页面,缓存需求等<%@ include file="afile" %> 包含其它文件<%@ taglib uri="" prefix="a" %> 标签库的定义

例子

<%@ page import="java.util.*,java.net.*,java.io.*" session="true" isErrorPage="false" errorPage="/error.jsp"%>

<%@ include file="copyright.html" %>

Jsp声明

声明函数或变量,供后续使用。

<%! int i = 0;%>

<%! Circle a = new Circle(2.0);%>

或者

int i = 0;

Jsp的action行为标签

9个隐式变量(内置变量)

HttpServletRequest request

HttpServletEesponse response

ServletContext application

PageContext pagecontext

ServletConfig config

HttpSession session

JspWriter out

Exception exception

page,等价于this

考试重点JspWriter,PageContext

package javax.servlet.jsp

public abstract class JspWriter extends Writer {

public static final int NO_BUFFER = 0;

public static final int DEFAULT_BUFFER = -1;指示 Writer 已缓冲并使用实现默认缓冲区大小的常量。

public static final int UNBOUNDED_BUFFER = -2;常量表示 Writer 是缓冲的并且是无界的;这在 BodyContent 中使用。

protected int bufferSize;

protected boolean autoFlush;

protected JspWriter(int bufferSize, boolean autoFlush) {

this.bufferSize = bufferSize;

this.autoFlush = autoFlush;

}

public abstract void newLine() throws IOException;

public abstract void print(boolean var1) throws IOException;

public abstract void print(char var1) throws IOException;

public abstract void print(int var1) throws IOException;

public abstract void print(long var1) throws IOException;

public abstract void print(float var1) throws IOException;

public abstract void print(double var1) throws IOException;

public abstract void print(char[] var1) throws IOException;

public abstract void print(String var1) throws IOException;

public abstract void print(Object var1) throws IOException;

public abstract void println() throws IOException;

public abstract void println(boolean var1) throws IOException;

public abstract void println(char var1) throws IOException;

public abstract void println(int var1) throws IOException;

public abstract void println(long var1) throws IOException;

public abstract void println(float var1) throws IOException;

public abstract void println(double var1) throws IOException;

public abstract void println(char[] var1) throws IOException;

public abstract void println(String var1) throws IOException;

public abstract void println(Object var1) throws IOException;

public abstract void clear() throws IOException;

public abstract void clearBuffer() throws IOException;

public abstract void flush() throws IOException;

public abstract void close() throws IOException;

public int getBufferSize() {

return this.bufferSize;

}

public abstract int getRemaining();此方法返回缓冲区中未使用的字节数。

public boolean isAutoFlush() {

return this.autoFlush;

}

}

package javax.servlet.jsp

public abstract class PageContext extends JspContext {

public static final int PAGE_SCOPE = 1;

public static final int REQUEST_SCOPE = 2;

public static final int SESSION_SCOPE = 3;

public static final int APPLICATION_SCOPE = 4;

public static final String PAGE = "javax.servlet.jsp.jspPage";

public static final String PAGECONTEXT = "javax.servlet.jsp.jspPageContext";

public static final String REQUEST = "javax.servlet.jsp.jspRequest";

public static final String RESPONSE = "javax.servlet.jsp.jspResponse";

public static final String CONFIG = "javax.servlet.jsp.jspConfig";

public static final String SESSION = "javax.servlet.jsp.jspSession";

public static final String OUT = "javax.servlet.jsp.jspOut";

public static final String APPLICATION = "javax.servlet.jsp.jspApplication";

public static final String EXCEPTION = "javax.servlet.jsp.jspException";

public PageContext() {

}

public abstract void initialize(Servlet var1, ServletRequest var2, ServletResponse var3, String var4, boolean var5, int var6, boolean var7) throws IOException, IllegalStateException, IllegalArgumentException;

public abstract void release();

public abstract HttpSession getSession();

public abstract Object getPage();页面对象的当前值(在 Servlet 环境中,这是 javax.servlet.Servlet 的实例)。

public abstract ServletRequest getRequest();请求对象 (ServletRequest) 的当前值。

public abstract ServletResponse getResponse();响应对象 (ServletResponse) 的当前值。

public abstract Exception getException();

public abstract ServletConfig getServletConfig();

public abstract ServletContext getServletContext();

public abstract void forward(String var1) throws ServletException, IOException;

public abstract void include(String var1) throws ServletException, IOException;

public abstract void include(String var1, boolean var2) throws ServletException, IOException;

public abstract void handlePageException(Exception var1) throws ServletException, IOException;

public abstract void handlePageException(Throwable var1) throws ServletException, IOException;

public BodyContent pushBody() {

return null;

}

public ErrorData getErrorData() {

return new ErrorData((Throwable)this.getRequest().getAttribute("javax.servlet.error.exception"), (Integer)this.getRequest().getAttribute("javax.servlet.error.status_code"), (String)this.getRequest().getAttribute("javax.servlet.error.request_uri"), (String)this.getRequest().getAttribute("javax.servlet.error.servlet_name"));

}

}

JSP EL表达式

<%

request.setAttribute("a","hello")

%>

${a}

会在四大作用域中依次搜索a这个键名。 显示hello

变量定义使用setAttribute()方法进行设置,可以设置在四大作用域中的任意一个域中。

预定义11个对象

为了方便使用,定义了可以直接供我们使用的11个对象。 大多是都是用Map存储,采用键值对的形式。

pageContextparamparamValuesheaderheaderValuescookieinitParampageScoperequestScopesessionScopeapplicationScope

只有pageContext是PageContext类型。

运算

取值 .``[]

最后

你看到了这里,感谢你愿意看这些碎碎念,不成体系而且很随意的内容。 我们都是普通人咯,现在时间也不多了呢,但是未来到底如何还是迷雾一团啊, 我希望在今年能取得我自己满意的成绩啊,身边的同学都有自己的强势,我真的是孤身一人在打拼呢。哎,总感觉不是为自己而活,是为父母的期望而活,为了自己的后辈开路而活。 总会有悲伤的时候呢,别影响你了,加油。

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。