第一部分 jsp技术
一:在server.xml中配置<Context/>元素部署web应用?
二:Jsp指令:定义jsp页面相关信息,优先等级高
15个
(page,language,session,info,import,contentType,pageEncoding,autoFlush,isErrorPage,errorPage,buffer,out,isELIgnored
;include:在使用include 指令的时候被包含的文件不要使用html便签,在使用include 指令时候应该不要重复变量,先导入到相关jsp页面中,然后会被服务器编译执行,只能添加静态的页面,相当于合二为一
,taglib:自定义标签)
三:EL表达式:(ExpressionLanguage)
四:9*9乘法表:
五:jsp动作标签,是在请求处理阶段按照出现的先后顺序执行的。
1.<jsp:include page=”url”flush=”flase|true”/>:可以包含静态和动态的页面,flush:设置是否刷新缓存区,两个文件相互独立,被包含的页面会对包含他的页面中请求对象做处理,将处理结果作为当前页面的包含内容,然后一起发送到服务器端,两者相互独立。
2.<jsp:forwardpage=”url”/>:
3.html中:<td colapsn=””></td>:colspan:规定 单元格可以横跨的列数
4.<jsp:param name=” username”value=”” /> 可以为其它标签传递参数,在其它页面得到参数的值可以使用,request.getParameter(“username”);
六:class.forName();
Class.forName(xxx.xx.xx) 返回的是一个类
1.在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。
A a = (A)Class.forName("pacage.A").newInstance();
这和
A a = new A();
是一样的效果。
2.jvm会执行静态代码段,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。
Class.forName(xxx.xx.xx) 返回的是一个类
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
3.动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象
String str = 用户输入的字符串
Class t = Class.forName(str);
t.newInstance();
在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。
4.Java中工厂模式经常使用newInstance()方法来创建对象
例如:
class c = Class.forName(“Example”);
factory = (ExampleInterface)c.newInstance();
其中ExampleInterface是Example的接口,可以写成如下形式:
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
进一步可以写成如下形式:
String className = readfromXMlConfig;//从xml 配置文件中获得字符串
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。
5.从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载java API的那个加载器。
6.newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
7.最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
七:获取请求客户端信息的方法:(10个方法)
1. 使用request.setAttribute();可以设置新的属性,但作用域只在一次请求中
2. Cookie:小段文本信息,可以标识用户身份,记录用户名和密码,跟踪重复用户。在服务器端生成发送给浏览器。主要用于存储一些不太重要的数据。
问题八:response(常用7大方法)
setHeader(name,value):设置http头文件
e.g.
response.setHeader(“refresh”,”5”);浏览器5秒刷新一次
response.setheader(“refresh”,”2;URL=welcome.jsp”);两秒后自动跳转到指定页面
服务器要输出信息时不会直接写到浏览器,而是先写到缓冲区,类外:(1)jsp页面输出信息全部写入缓冲区,(2)缓冲区已经满(3)jsp页面调用flushbuffer()或者out对象的flush()方法。
八:session对象
1. 服务器给每一个用户都创建一个session对象,用于保存用户信息和追踪用户。
2. 使用Map来保存数据,可以保存对象和字符串之类的数据。
3. 在使用getAttribute获取session中保存的信息时,需要保证设置session的界面被请求过,而且没有中断过,使用该方法才可有用。
九:application对象
1. 功能类似于session对象,但是保存信息周期更加长,在整个应用程序中都起作用。
2. 访问应用程序初始化参数:
十:out
1. clear清楚缓冲区数据,如果内容提交了,会报IO异常错误,而使用clearBuffer清除缓冲区数据不会。
2. intcount =(Integer.parseInt(application.getAttribute("count").toString()));
解释:application.getAttribute()返回值是Object类型,将object转化为string类型的数据,使用Integer.parseInt重新构造一个integer对象。
int mycount =(Integer.valueOf(application.getAttribute("count").toString()).intValue());
返回一个整数对象的值。
十一:其它内置对象
1. pageContextt:获取任何范围内的参数,包括request,response,session,application,out等的对象。
2. config:获取服务器配置信息。
3. page:应答或者请求,类似java中的this指针。
4. exception:异常处理对象。在使用时需要在jsp的page指令中设置isErrorPage=”true”的条件。
十二:
1.onKeyDown=”javastrap代码”,按下键盘时出发该事件,使用event.keyCode取回键盘输入的数据.
2.ondragstart=”javastrap代码”在哦、用户拖动元素时触发。
3. cellpadding 属性规定单元边沿与其内容之间的空白
4. cellspacing 属性规定单元格之间的空间
5. valign 属性规定单元格中内容的垂直排列方式