收藏 分享(赏)

JSP面试知识.doc

上传人:凯文文 文档编号:46590 上传时间:2018-07-31 格式:DOC 页数:16 大小:89KB
下载 相关 举报
JSP面试知识.doc_第1页
第1页 / 共16页
JSP面试知识.doc_第2页
第2页 / 共16页
JSP面试知识.doc_第3页
第3页 / 共16页
JSP面试知识.doc_第4页
第4页 / 共16页
JSP面试知识.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、JSP 方面1、 JSP 四种范围是什么?区别是什么?Page:指单单一页 jsp page 的范围;Request:的范围只在一 jsp 页发出请求到另一页之间,随后这个属性失效;Session:范围是用户和服务器连接的那段时间,用户与服务器断开属性就失效; Application:作用范围最大,在服务器一开始执行服务到服务器关闭为止。可能造成服务器负载过重。2、 JSP 有哪些内置对象?作用和分别是什么?答:JSP 共有以下 9 种基本内置组件(可与 ASP 的 6 种内部组件相对应): request 用户端请求,此请求会包含来自 GET/POST 请求的参数 response 网页传回

2、用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config servlet 的构架部件 page JSP 网页本身 exception 针对错误网页,未捕捉的例外 3、 JSP 有哪些动作?作用分别是什么?答:JSP 共有以下 6 种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个 JavaBean。 jsp:setProperty:设置 JavaBean 的属性。 jsp:getProperty:

3、输出某个 JavaBean 的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记 4、 getAttribute()和 setAttribute()的作用是什么?5、 get 和 post 的区别?Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和POST 方法。二者主要区别如下:1、Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据。2、Get 将表单中数据的按照 variable=value 的形式,添加到 acti

4、on 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“这个“value”的名称是在 tld 里定义的。取什么名字都可以,只需 tag 里提供相应的 set 方法即可。2)处理 doStartTag 或 doEndTag 。这两个方法是 TagSupport 提供的。 还是以c:out value=“/为例,当 jsp 解析这个标签的时候,在“”处触发 doStartTag 事件,在“”时触发 doEndTag 事件。通常在 doStartTag 里进行逻辑操作,在 doEndTag 里控制输出。3)编写 tld 文件。4)在 jsp 页面导入 tld这样,你的 jsp 页面

5、就可以使用自己的 tag 了。通常你会发现自己绝大多数活动都集中在 doStartTag 或 doEndTag 方法里。确实如此,熟悉一些接口和类之后,写 taglib 很容易。正如jsp 设计的作者所言:里面的逻辑稍微有点复杂,但毕竟没有火箭上天那么难。 2、一个简单的例子:OutputTagpackage diegoyun;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;/* author chenys*/p

6、ublic class OutputTag extends TagSupportprivate String name=null; public void setName(String name)this.name = name;public int doStartTag() throws JspExceptiontryJspWriter out = pageContext.getOut();out.print(“Hello! “ + name);catch (Exception e) throw new JspException(e);return EVAL_PAGE;简要说明:1、如何输出

7、到 jsp 页面:调用 JspWriter JspWriter out = pageContext.getOut();out.print.记住这个方法就可以了。2、输出后如何作处理函数会返回几个值之一。EVAL_PAGE 表示 tag 已处理完毕,返回 jsp 页面。还有几个值,例如 EVAL_BODY_AGAIN 和 EVAL_BODY_INCLUDE 等,后面我们会作讨论编写 tld?xml version=“1.0“ encoding=“ISO-8859-1“ ?!DOCTYPE taglibPUBLIC “-/Sun Microsystems, Inc./DTD JSP Tag Lib

8、rary 1.2/EN“http:/ tlib-version1.0/tlib-versionjsp-version1.2/jsp-versionshort-namediego/short-name !-OutputTag-tagnameout/nametag-classdiegoyun.OutputTag/tag-classbody-contentempty/body-contentattributenamename/namerequiredfalse/requiredrtexprvaluefalse/rtexprvalue/attribute/tag /taglib 在 WEB-INF 下

9、新建 tlds 文件夹,把这个文件取名为 diego.tld,放到 tlds 文件夹下。路径应该这样:WEB-INFtldsdiego.tld关于 tld 的简单说明:short-name:taglib 的名称,也称为前缀。比如c:out value=“/ 里的“c”name:tag 的名字。例如 c:out value=“/ 里的“out”,我们的类也取名为 out,由于有前缀作区分,不会混淆tag-class:具体的 tag 类。带包名body-content:指 tag 之间的内容。例如 c:out value=“ . /c 起始和关闭标签之间就是 body-content。由于没有处理

10、 body-content,所以上面设为 emptyattribute里的 name:属性名字。例如c:out value=“/里的 value。名字可任意取,只要类里提供相应的 set 方法即可。required:是否必填属性。rtexprvalue:是否支持运行时表达式取值。这是 tag 的强大功能。以后我们会讨论。暂时设为 false编写 jsp 页面% page language=“java“% taglib uri=“/WEB-INF/tlds/diego.tld“ prefix=“diego“%htmlbodyTest Tag:diego:out name=“diegoyun“/

11、/body/html我的编程环境是 eclipse+tomcat.启动服务器,如果一切按照上面步骤的话,就能看到 Test Tag: Hello! diegoyun 字样最简单的 tag 就这么出来了。并不难,是不是?9、 Jsp 跳转有几种方式?分别是什么?10、 JavaBuan 的范围?标签里有一属性 scope,它用来设定 JavaBean 的范围,它的值只能为Page,request,session,application,不可为其它值。使用不同的 scope 属性值,能在不用的范围共享 JavaBean.11、 JSP 中动态 INCLUDE 与静态 INCLUDE 的区别? 答:

12、动态 INCLUDE 用 jsp:include 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现,定不会检查所含文件的变化,适用于包含静态页面 12、两种跳转方式分别是什么?有什么区别? 答:有两种,分别为: 前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于 go to 语句。 JAVA 方面1、 Java 的类型转换,日期与字符串间的转换。如果低级类型为 char 型,向高级类型(整型

13、)转换时,会转换为对应 ASCII 码值,例如rchar c=c; int i=c; System.out.println(“output:“+i);输出:output:99;对于 byte,short,char 三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。short i=99;char c=(char)i;System.out.println(“output:“+c);输出:output:c;但根据笔者的经验,byte,short,int 三种类型都是整型,因此如果操作整型数据时,最好统一使用 int 型。2.2 强制类型转换 将高级变量转换为低级变量时,情

14、况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:int i=99;byte b=(byte)i;char c=(char)i;float f=(float)i;可以想象,这种转换肯定可能会导致溢出或精度的下降,因此笔者并不推荐使用这种转换。2.3 包装类过渡类型转换在我们讨论其它变量类型之间的相互转换时,我们需要了解一下 Java 的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。Java 共有六个包装类,分别是Boolean、Character 、Integer、 Long、Float 和 Double,

15、从字面上我们就可以看出它们分别对应于 boolean、char、int、long、float 和 double。而 String 和 Date 本身就是类。所以也就不存在什么包装类的概念了。在进行简单数据类型之间的转换(自动转换或强制转换)时,我们总是可以利用包装类进行中间过渡。一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:例 1,当希望把 float 型转换为 double 型时:float f1=100.00f; Float F1=new float(f1); Double d1=F1.doubleValue();/F1.dou

16、bleValue()为Float 类的返回 double 值型的方法当希望把 double 型转换为 int 型时:double d1=100.00; Double D1=new Double(d1); int i1=D1.intValue();当希望把 int 型转换为 double 型时,自动转换:int i1=200; double d1=i1;简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(floa

17、t value)、Double(double value)而在各个包装类中,总有形为Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而 doubleValue()可以得到其对应的双精度实型变量。3 字符串型与其它数据类型的转换 通过查阅类库中各个类提供的成员方法可以看到,几乎从 java.lang.Object 类派生的所有类提供了 toString()方法,即将该类转换为字符串。例如:Characrer,Integer,Float,Double,Boolean,Shor

18、t 等类的 toString()方法 toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。如下所示:int i1=10;float f1=3.14f;double d1=3.1415926;Integer I1=new Integer(i1);/生成 Integer 类rFloat F1=new Float(f1); /生成 Float 类rDouble D1=new Double(d1); /生成 Double 类r/分别调用包装类的 toString()方法转换为字符串 String si1=I1.toString();String sf1=F1.t

19、oString();String sd1=D1.toString();Sysytem.out.println(“si1“+si1);Sysytem.out.println(“sf1“+sf1);Sysytem.out.println(“sd1“+sd1);五、将字符型直接做为数值转换为其它数据类型将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的 ASCII 码,但是我们有时还需要另一种转换关系,例如,1就是指的数值 1,而不是其 ASCII 码,对于这种转换,我们可以使用Character 的 getNumericValue(char

20、 ch)方法。六、Date 类与其它数据类型的相互转换整型和 Date 类之间并不存在直接的对应关系,只是你可以使用 int 型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用 Date 类构造函数的三种形式:Date(int year, int month, int date):以 int 型表示年、月、日Date(int year, int month, int date, int hrs, int min):以 int 型表示年、月、日、时、分Date(int year, int month, int date, int hrs, int

21、min, int sec):以 int 型表示年、月、日、时、分、秒r在长整型和 Date 类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间 1970 年 1 月 1 日 0 时 0 分 0 秒的毫秒数。对于这种对应关系,Date 类也有其相应的构造函数:Date(long date)获取 Date 类中的年、月、日、时、分、秒以及星期你可以使用 Date 类的 getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds() 、getDay() 方法,你也可以将其理解为将 Date 类转换成 int。

22、而 Date 类的 getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date 类也有一个 toString()方法可以将其转换为 String 类。有时我们希望得到 Date 的特定格式,例如 20020324,我们可以使用以下方法,首先在文件开始引入,import java.text.SimpleDateFormat;import java.util.*;java.util.Date date = new java.util.Date();/如果希望得到 YYYYMMDD 的格式 SimpleDateFormat sy1=new SimpleDateForm

23、at(“yyyyMMDD“);String dateFormat=sy1.format(date);/如果希望分开得到年,月,日 SimpleDateFormat sy=new SimpleDateFormat(“yyyy“);SimpleDateFormat sm=new SimpleDateFormat(“MM“);SimpleDateFormat sd=new SimpleDateFormat(“dd“);String syear=sy.format(date);String smon=sm.format(date);String sday=sd.format(date);结束语:当然,

24、笔者的论述只是一人之见,如果希望更多了解有关 JAVA 数据类型转换的知识,笔者建议参考 JAVA 类库 java.util.*下面的Integer 类rBoolean 类rCharacter 类rFloat 类rDouble 类rString 类 rDate 类 根据自己的需要,参考不同类的各种成员方法进行数据类型之间的转换。大家可以参考 JAVA 的网上类库或下载一份,来更灵活的利用其中的成员方法进行数据类型之间的转换,IP 地址:http:/ 补充:如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt(String)

25、; 或 i = Integer.parseInt(String,int radix); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异 . 2 如何将整数 int 转换成字串 String ? A. 有叁种方法: 1.) String s = String.valueOf(i); 2.) String s = Integer.toString(i); 3.) String s = “ + i; 注: Double, Float, Long 转成字串的方法大同小异 . 这是一个

26、例子 ,说的是 JAVA 中数据数型的转换.供大家学习2、 连一个数据库。给一个 SQL 语句,对返回的结果集进行操作。package com.bluedot.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class ConnDBpublic static String jdbcDriver=“org.gjt.mm.mysql.Driver“;public static String url=“jdbc:mysql:/localhost:3306

27、/test_user“;public static String name=“root“;public static String password=“root“;public ConnDB()super();public static Connection getConnection()Connection conn=null;tryClass.forName(jdbcDriver).newInstance();conn=DriverManager.getConnection(url,name,password);catch (InstantiationException e)/ TODO

28、Auto-generated catch blocke.printStackTrace();catch (IllegalAccessException e)/ TODO Auto-generated catch blocke.printStackTrace();catch (ClassNotFoundException e)/ TODO Auto-generated catch blocke.printStackTrace();catch (SQLException e)/ TODO Auto-generated catch blocke.printStackTrace();return co

29、nn;3、 线程。JavaScript 方面1、 用 JavaScript 做一个树状菜单。java 概念简析对象的 创建与使用java 中对象是由类创建出来的创建对象包括:1.定义对象 2.建立对象 3.初始化对象 如:Rectangle myRectangle=new Rectangle(0,0,10,20);使用: 1.通过对象变量的引用来使用对象如:myRectangle.width=20;2.通过调用对象的方法来使用对象如:myRectangle.move(5,10);类,类的属性,类的成员变量类分类的说明和类体如:class Pointint x,y; /变量说明x() /类 cl

30、ass 中的一个方法 x() return x类的属性包括:1.指出此类的父类 (extends 部分)2.指出类提供的接口 (implements 部分)如:class ImNumber extends Number implements Collection().3.指出类的特性 (修饰部分)如:final class ImNumber extends Number implements Collection() . /final 指出类 ImNumber 是个最终类又如:abstract class ImNumber extends Number implements Collectio

31、n(). /abstract 指出类 ImNumber 是个抽象类final 和 abstract 不可能同时出现由类创建出对象,而多个类组成包,同一个包中的类可以相互访问。但有种类是公共类,可以被包以外的其他类或对象访问。用 public 表示是公共类,用 private 表示只能被同一个包中的其他类访问。用 public 和private 表明类的一种访问权限。因此,类的说明是如下形式:modifiersclass ClassName extends SuperClassNameimplements Interfacelist(接口列表) . /带方括号的部分为可选的类的成员变量定义包含:

32、1.变量的访问权限 (用关键字 public,private,protected 或 private protected 表示)2.是否为静态变量 (用关键字 static 表示)3.是否为常量 (如果一个变量是一个常量,用关键字 final)如:final int CON=20;类的成员变量的访问权限:1.公用(public)变量 (允许所有的类访问 )2.专用(private) 变量 (只能被其所属的类访问)3.保护型(protected)变量 (允许被其归属的类,由此类派生的子类以及同一包中的其他类访问)4.专用保护型(private protected)变量 (允许被其归属的类,由此类

33、派生的子类访问 )5.默认型变量(不用任何词来修饰,没有设置访问权限。允许所归属的类访问和被同一包中的其他类访问)方法方法和类的结构相似,有方法说明和方法体。方法的结构表示如下所示:modifiers(访问权限)type(返回参数类型,没有返回参数就写成 void) methodName(para1,para2,. (入口参数)methodBody例: public int selMax(int x,int y)if (xy) return x;else return y;构造方法不能有独立的方法名字,而且只能有入口参数,没有返回值。 (名字与 class 一样,入口参数可不一样。 )不能有 abstract.调用时,第一条用 super()语句调用, (如果没用 super(),系统默认为 super())有入口参数的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 网络技术 > 热门技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报