- 浏览: 110954 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
wj10000:
博猪是魅纸
JVM Crash,生成hs_err_pid.log文件 -
stardust1900:
at com.huawei.u_sys.common.licm ...
JAVA问题定位技术 -
hanazawakana:
学习,让我明白了
struts2.0中资源文件查找顺序 -
tiao321:
我也是一样,全部设成utf8的形式不行,有其他的解决方案吗,谢 ...
mysql乱码问题 -
jfhgmv:
Hi,美女!-Xverbosegclog 这个参数是Linux ...
JVM GC日志开启
——————————————————J2SE——————————————————
1、作用域public,private,protected,以及不写时的区别
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
不写时默认为friendly √ √ × ×
private √ × × ×
2、ArrayList和Vector的区别
Vector 是线程安全的,ArrayList不是;ArrayList效率高
3、HashMap和Hashtable的区别
HashMap和Hashtable的区别
1.Hashtable是线程安全的一个Collection, HashMap不是线程安全的
2.HashMap允许一个null key和多个null value 而hashtable不允许
3.public class Hashtable extends Dictionary implements Map, Cloneable, Serializable (实现的是Map而不是Set)
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
4、多线程有两种实现方法:
(1)继承Thread类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,在此方法中加入线程所要执行的代码即可:
(2)实现Runnable接口
Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现
5、同步有两种实现方法:
(1)synchronized
(2)wait,motify
6、内部类相关
1.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。
2.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;
3.非静态内部类的非静态成员可以访问外部类的非静态变量。
7、JAVA中的Collection FrameWork
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)
Map提供key到value的映射
8、JAVA中的多态与继承
Java中多态的表现形式:方法重载与方法重写
方法重载,是指在同一个类中的方法,方法名相同,而方法的参数类型或个数或顺序不同
方法重写(或称覆盖),是指子类重写父类的方法,方法名相同,而内容不同
继承是子类继承父类,子类具有父类的数据成员和成员方法
9、抽象类与接口
1. 抽象类用继承的方式,JAVA语言中继承只允许单一继承; 而接口允许多实现
2. 抽象类允许有构造函数, 接口不允许
3. 抽象类允许有被实现的方法, 接口不允许
4. 如果某个情况下抽象类,接口都适合使用, 那么优先选择接口
接口的方法必须是public的
抽象类和接口都不允许实例化
用关键字 implements 实现接口
例如:
class demo implements myinterface
如果有一个以上接口被实现,则用逗号隔开接口名称,如下所示:
class demo implements Mycalc, Mycount
抽象类特点:
1 抽象类可以有属性,抽象类中的方法可以使用private,protected,public,default访问修饰符.
2 抽象类中的非抽象方法可以有方法主体.
3 构造方法和static类方法不能声明为abstract
4 继承抽象类的子类必须实现抽象类中的抽象方法,否则该子类也需要声明为抽象类。
5 抽象类不能被实例化,但是抽象类的引用可以指向其子类的实例。
6 抽象类中不一定含有抽象方法,但是含有抽象方法的类一定是抽象类.
接口特点:
1. 接口可以看作是一个高度抽象的类,他只能包含public或默认类型的抽象方法,在声明方法时即使不加public,编译器也默认为public,
接口中没有属性,只能有public static final类型的字段,即使声明字段时不加public static final,该字段也默认为public static final类
型的.
2. 接口允许多重继承并且接口之间也可以存在多重继承关系,但是接口只能继承自接口不能继承类,继承关键字extends而不是implements。
3. 如果一个类实现了一个接口那么他必须实现接口中的全部方法,否则该类必须声明为抽象类.4. 接口不能被实例化,但是接口的引用可以指向子类的实例.
相同点:
1. 均不能被实例化,但是父类的引用可以指向子类的实例.
2. 都含有抽象方法.一个类继承自抽象类或者是实现了某个接口,它必须实现抽象类中全部的抽象方法或接口中的全部抽象方法,否则
该类必须声明为抽象类.
3. 都可以作为类的模板,规定子类必须有的行为,但是不用去关心子类行为具体的实现。
不同点:
1. 接口中不可以有属性,可以有public static final的字段。并且接口中的方法全部为public类型的抽象方法。
2. 抽象类可以由属性和非抽象方法,并且属性和非抽象方法可以使用private,protected,public,default访问修饰符。在抽象类中
我们可以选择的规定某个方法为抽象方法。但是在接口中所有方法必须是抽象的。
3. 抽象类声明抽象方法语法为:abstract public void get();接口中声明抽象方法语法:public void get();或void get();
4. 抽象类允许单一继承,也就是一个子类只能由一个父类,接口允许多重继承,一个类可以实现多个接口,一个接口可以继承多个父接口。
5. 抽象类可以继承自其它的父类并实现多个接口,但是接口只能继承接口。
在实际开发中,位于顶层的为接口,然后根据需要当使用属性并且刻意表达继承的时候使用抽象类,然后是具体实现的类。
10、用JAVA实现一种排序,JAVA类实现序列化的方法? 如在COLLECTION框架中,实现比较要实现什么样的接口?
答:用插入法进行排序代码如下
package test;
import java.util.*;
class InsertSort
{
ArrayList al;
public InsertSort(int num,int mod)
{
al = new ArrayList(num);
Random rand = new Random();
System.out.println("The ArrayList Sort Before:");
for (int i=0;i<num ;i++ )
{
al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
System.out.println("al["+i+"]="+al.get(i));
}
}
public void SortIt()
{
Integer tempInt;
int MaxSize=1;
for(int i=1;i<al.size();i++)
{
tempInt = (Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
{
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
} else {
for (int j=0;j<MaxSize ;j++ )
{
if
(((Integer)al.get(j)).intValue()>=tempInt.intValue())
{
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("The ArrayList Sort After:");
for(int i=0;i<al.size();i++)
{
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
}
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口
11、JAVA多线程编程。 用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。
public class ThreadTest1{
private int j;
private static void main(String args[]){
ThreadTest1 tt = new ThreadTest1();
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
for(int i=0; i<2;i++){
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}
}
12、STRING与STRINGBUFFER的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操 作字符串,即包含多个字符的字符数据。这个String类提供了数值不 可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当 你知道字符数据要改变的时候你就可以使用StringBuffer。典型地, 你可以使用StringBuffers来动态构造字符数据。
13、Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。
占用字节 大小范围
byte(字节型) 1 -128~127
short(短整型) 2 -32768~32767
int(整型) 4 -2147483648~2147483647
long(长整型) 8 -9223372036854775808 ~ 9223372036854775807
float(浮点型) 4 -3.4E38~3.4E38
double(双精度型) 8 -1.7E308~1.7E308
char(字符型) 2 从字符型对应的整型数来划分,其表示范围是0~65535
boolean(布尔型) 1 true或false
14、字符串的操作:写一个方法,实现字符串的反转,如:输入abc,输出cba
15、数据类型之间的转换,如何将数值型字符转换为数字?如何将数字转换为字符?如何去小数点前两位,并四舍五入?
public static void main(String[] args) {
double a = 12.54;
int i = (int)a;
i = i % 100;
double b = a - i;
b = java.lang.Math.round(b);
System.out.print(b);
}
16、日期和时间,如何取得年月日,小时分秒?如何取得从1970年到现在的毫秒数?
Calendar cal = Calendar.getInstance();
Cal.get(Calendar.YEAR);
Cal.get(Calendar.MONTH+1);
Cal.get(Calendar.DAY_OF_MONTH);
17、文件和目录(I/O)操作,如何列出某个目录下的所有文件?如何列出某个目录下的所有子目录?判断一个文件或目录是否存在?如何读写文件?
18、编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
String str = “中华人民共和国”;// GB2312
byte[] b = str.getBytes(“ISO-8859-1”);
String str2 = new String(b);
19、Java中访问数据库的步骤,Statement和PreparedStatement之间的区别
1.提高代码的可读性和可维护性。
2. PreparedStatement接口用于执行预编译的SQL语句,可提高执行提高性能;Statement执行SQL语句并将数据检索到ResultSet中。
3.提高程序的安全性,防止SQL注入
20、Java中有两种方式来实现比较,一种是实现java.lang.Comprable;另一种实现java.util.Comparator.下面来谈它们两个的区别,和如何选择哪种方案比较好.
区别:
1. Comparale 接口只有一个方法: compareTo(Object obj)方法, 而Comparator接口,有两个方法:compare(Object obj1,Object obj2)和equals(Object obj)
2. Comparable 的类层次是:java.lang, 而java.util
3. 在Comparator中的compare方法里面,要对两个参数的类型进行检查,而Comparable中的compareTo只对一个参数进行检查
4.对于Comparator的equals方法,一般来说不用重写,而直接用基类Object的已经能满足大多数的需求,在这里推荐不要重写
选择哪种方案:
1. 对于Comparale比较简单而且需要比较少的工作,而且在用到TreeSet或TreeMap时,构造器不用带参数,且能每次都能用相同的的比较方法,如果用Comparable能达到目的,就最好用Comparable接口
2. 对于Comparator接口比较灵活,而且要更多一点的工作,能通过实现Comparator接口来产生很多不一样的类,而且能方便按其他的字段进行排序,同时对于基本类型数组无法用Comparator进行排序,只能用于对象的排序
21、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
答:代码如下:
package test;
class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:´"+SplitStr+"´;SplitBytes="+SplitByte);
}
public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split
Byte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ )
{
if (i==loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
public static void main(String[] args)
{
SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人
0ewldfls=103",4);
ss.SplitIt();
}
}
——————————————————J2EE——————————————————
1、jsp的内置对象及其作用
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
2、JSP的内置对象及方法
request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取
cookie, header, 和session数据的有用的方法。
response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page表示从该页面产生的一个servlet
3、jsp的动作及其作用
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个javaBean。
jsp:setProperty:设置javaBean的属性。
jsp:getProperty:输出某个javaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为java插件生成OBJECT或EMBED标记
4、JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态INCLUDE用include伪码实现并不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。
5、JAVA SERVLET API中forward() 与redirect()的区别
// forward()
RequestDispatcher rd = this.getSeervletContext().getRequestDispatcher(“/hello.jsp”);
Rd.forward(request,response);
// redirect()
response.sendRedirect(“login.jsp?errormsg=”+errormsg);
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
6、说一说Servlet的生命周期?
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。
什么情况下调用doGet()和doPost()? Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
7、描述JSP和Servlet的区别、共同点、各自应用的范围
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
尽管JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事物处理而通过Servlet来生成动态网页很不直观;JSP由HTML代码和JSP标签构成可以方便地编写动态网页因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在Sstuts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
8、在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符?
public static String filterHTML(String value){
value.replaceAll("&", "&");
value.replaceAll(" <", "<");
value.replaceAll(">", ">");
value.replaceAll("'", "'");
value.replaceAll("\"", """);
value.replaceAll("\n", " <br/>");
return value;
}
9、Cookie和Session的作用,区别和各自的应用范围,Session工作原理
10、Jsp中errorPage的作用
JSP里的ErrorPage的功能是捕获未被预料到的异常的。如果已经被写到try/catch块里的异常,是不会被ErrorPage捕获到的!
11、介绍在Jsp中如何使用JavaBeans
12、Jsp和Servlet中的请求转发分别如何实现
JSP:
<jsp:forward page= "nextpage.jsp"/>
servlet:
RequestDispatcher rd = this.getSeervletContext().getRequestDispatcher(“/hello.jsp”);
Rd.forward(request,response);
13、J2EE
J2EE 是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型 (enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
J2EE是通称,它包括了JSP, SERVLET, JAVABEAN,等等..........
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。
Java Transaction API(JTA),为分布式系统中可处理的应用程序规定了一个高级的管理规范。
Java Naming and Directory Interface(JNDI),在Java 平台与商业信息之间,JNDI提供了统一、无缝的标准化连接。通过使用JNDI,程序员可以在企业多命名与目录服务之间传送Java 应用程序。
Java Interface Definition Language(JIDL),通过使用CORBA,可以提供协同工作的能力。JIDL包括一个IDL-to-Java 编译器和支持IIOP(Internet Inter-Orb Protocol)的ORB。
JDBC,几乎是为所有的数据库提供了统一的接口,同时可以创建高级工具和接口。
Java Message Service(JMS),它几乎规范了所有企业级消息服务,如可靠查询、发布消息、订阅杂志等各种各样的PUSS/PULL技术的应用,并且为它们提供了一个标准接口。
Java Transaction API(JTA),为分布式系统中可处理的应用程序规定了一个高级的管理规范。
14、介绍J2EE、J2SE、J2ME的区别
15、J2EE是一种技术还是一种平台,他提供了那些技术
16、Web.xml的作用
17、简单介绍您所了解的MVC
MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过javaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
18、简单介绍您所了解的structs2。
19、WEB SERVICE名词解释:SOAP、UDDI,WSDL解释。
SOAP:简单对象访问协议(Simple Object Access Protocol)
UDDI:通用描述、发现及整合
WSDL:Web services 描述语言(是一个基于xml的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可读的,又是人可阅读的,这将是一个很大的好处)
20、开发中都用到了那些设计模式?用在什么场合?
Java中的23种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
singleton:单例,用来减少垃圾对象和缓存用
factory:工厂模式,用来解耦(呵呵,其实模式都是用来解耦的)
facade和decorator:封装接口
command:命令模式,传递
Iterator:用来遍历对象
Observer:用来监听状态变化(现在习惯用listener机制替代)
templete:模板模式,用来处理相同的操作步骤
strategy:策略模式,策略选择
proxy:用来附加功能,属性或隐蔽。
bridge也很实用,用来解耦工厂与产品搭配之类的选择
21、什么是UML? 标准UML都有哪些图?
UML统一建模语言
用例图、类图、序列图、状态图、活动图、组件图、部署图
22、Request对象的主要方法:
setAttribute(String name,Object):设置名字为name的request的参数值
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
23、四种会话跟踪技术 会话作用域ServletsJSP 页面描述
page是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
24、如何现实servlet的单线程模式
当一个servlet实现了SingleThreadModel接口时
25、页面间对象传递的方法request,session,application,cookie等
26.在jsp:useBean语法中使用beanName的好处
beanName使用Beans.instantiate()初始化Bean
27、Servlet执行时一般实现的方法
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()JSP
60、什么情况下调用doGet()和doPost()
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()
61、Servlet的基本架构
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
}
61、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
答:Web Service描述语言WSDL
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
JDBC
2、Class.forName的作用?为什么要用?
答:调用该访问返回一个以字符串指定类名的类的对象。
3、Jdo是什么?
答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。
1、作用域public,private,protected,以及不写时的区别
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
不写时默认为friendly √ √ × ×
private √ × × ×
2、ArrayList和Vector的区别
Vector 是线程安全的,ArrayList不是;ArrayList效率高
3、HashMap和Hashtable的区别
HashMap和Hashtable的区别
1.Hashtable是线程安全的一个Collection, HashMap不是线程安全的
2.HashMap允许一个null key和多个null value 而hashtable不允许
3.public class Hashtable extends Dictionary implements Map, Cloneable, Serializable (实现的是Map而不是Set)
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
4、多线程有两种实现方法:
(1)继承Thread类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,在此方法中加入线程所要执行的代码即可:
(2)实现Runnable接口
Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现
5、同步有两种实现方法:
(1)synchronized
(2)wait,motify
6、内部类相关
1.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。
2.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;
3.非静态内部类的非静态成员可以访问外部类的非静态变量。
7、JAVA中的Collection FrameWork
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)
Map提供key到value的映射
8、JAVA中的多态与继承
Java中多态的表现形式:方法重载与方法重写
方法重载,是指在同一个类中的方法,方法名相同,而方法的参数类型或个数或顺序不同
方法重写(或称覆盖),是指子类重写父类的方法,方法名相同,而内容不同
继承是子类继承父类,子类具有父类的数据成员和成员方法
9、抽象类与接口
1. 抽象类用继承的方式,JAVA语言中继承只允许单一继承; 而接口允许多实现
2. 抽象类允许有构造函数, 接口不允许
3. 抽象类允许有被实现的方法, 接口不允许
4. 如果某个情况下抽象类,接口都适合使用, 那么优先选择接口
接口的方法必须是public的
抽象类和接口都不允许实例化
用关键字 implements 实现接口
例如:
class demo implements myinterface
如果有一个以上接口被实现,则用逗号隔开接口名称,如下所示:
class demo implements Mycalc, Mycount
抽象类特点:
1 抽象类可以有属性,抽象类中的方法可以使用private,protected,public,default访问修饰符.
2 抽象类中的非抽象方法可以有方法主体.
3 构造方法和static类方法不能声明为abstract
4 继承抽象类的子类必须实现抽象类中的抽象方法,否则该子类也需要声明为抽象类。
5 抽象类不能被实例化,但是抽象类的引用可以指向其子类的实例。
6 抽象类中不一定含有抽象方法,但是含有抽象方法的类一定是抽象类.
接口特点:
1. 接口可以看作是一个高度抽象的类,他只能包含public或默认类型的抽象方法,在声明方法时即使不加public,编译器也默认为public,
接口中没有属性,只能有public static final类型的字段,即使声明字段时不加public static final,该字段也默认为public static final类
型的.
2. 接口允许多重继承并且接口之间也可以存在多重继承关系,但是接口只能继承自接口不能继承类,继承关键字extends而不是implements。
3. 如果一个类实现了一个接口那么他必须实现接口中的全部方法,否则该类必须声明为抽象类.4. 接口不能被实例化,但是接口的引用可以指向子类的实例.
相同点:
1. 均不能被实例化,但是父类的引用可以指向子类的实例.
2. 都含有抽象方法.一个类继承自抽象类或者是实现了某个接口,它必须实现抽象类中全部的抽象方法或接口中的全部抽象方法,否则
该类必须声明为抽象类.
3. 都可以作为类的模板,规定子类必须有的行为,但是不用去关心子类行为具体的实现。
不同点:
1. 接口中不可以有属性,可以有public static final的字段。并且接口中的方法全部为public类型的抽象方法。
2. 抽象类可以由属性和非抽象方法,并且属性和非抽象方法可以使用private,protected,public,default访问修饰符。在抽象类中
我们可以选择的规定某个方法为抽象方法。但是在接口中所有方法必须是抽象的。
3. 抽象类声明抽象方法语法为:abstract public void get();接口中声明抽象方法语法:public void get();或void get();
4. 抽象类允许单一继承,也就是一个子类只能由一个父类,接口允许多重继承,一个类可以实现多个接口,一个接口可以继承多个父接口。
5. 抽象类可以继承自其它的父类并实现多个接口,但是接口只能继承接口。
在实际开发中,位于顶层的为接口,然后根据需要当使用属性并且刻意表达继承的时候使用抽象类,然后是具体实现的类。
10、用JAVA实现一种排序,JAVA类实现序列化的方法? 如在COLLECTION框架中,实现比较要实现什么样的接口?
答:用插入法进行排序代码如下
package test;
import java.util.*;
class InsertSort
{
ArrayList al;
public InsertSort(int num,int mod)
{
al = new ArrayList(num);
Random rand = new Random();
System.out.println("The ArrayList Sort Before:");
for (int i=0;i<num ;i++ )
{
al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
System.out.println("al["+i+"]="+al.get(i));
}
}
public void SortIt()
{
Integer tempInt;
int MaxSize=1;
for(int i=1;i<al.size();i++)
{
tempInt = (Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
{
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
} else {
for (int j=0;j<MaxSize ;j++ )
{
if
(((Integer)al.get(j)).intValue()>=tempInt.intValue())
{
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("The ArrayList Sort After:");
for(int i=0;i<al.size();i++)
{
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
}
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口
11、JAVA多线程编程。 用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。
public class ThreadTest1{
private int j;
private static void main(String args[]){
ThreadTest1 tt = new ThreadTest1();
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
for(int i=0; i<2;i++){
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}
}
12、STRING与STRINGBUFFER的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操 作字符串,即包含多个字符的字符数据。这个String类提供了数值不 可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当 你知道字符数据要改变的时候你就可以使用StringBuffer。典型地, 你可以使用StringBuffers来动态构造字符数据。
13、Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。
占用字节 大小范围
byte(字节型) 1 -128~127
short(短整型) 2 -32768~32767
int(整型) 4 -2147483648~2147483647
long(长整型) 8 -9223372036854775808 ~ 9223372036854775807
float(浮点型) 4 -3.4E38~3.4E38
double(双精度型) 8 -1.7E308~1.7E308
char(字符型) 2 从字符型对应的整型数来划分,其表示范围是0~65535
boolean(布尔型) 1 true或false
14、字符串的操作:写一个方法,实现字符串的反转,如:输入abc,输出cba
15、数据类型之间的转换,如何将数值型字符转换为数字?如何将数字转换为字符?如何去小数点前两位,并四舍五入?
public static void main(String[] args) {
double a = 12.54;
int i = (int)a;
i = i % 100;
double b = a - i;
b = java.lang.Math.round(b);
System.out.print(b);
}
16、日期和时间,如何取得年月日,小时分秒?如何取得从1970年到现在的毫秒数?
Calendar cal = Calendar.getInstance();
Cal.get(Calendar.YEAR);
Cal.get(Calendar.MONTH+1);
Cal.get(Calendar.DAY_OF_MONTH);
17、文件和目录(I/O)操作,如何列出某个目录下的所有文件?如何列出某个目录下的所有子目录?判断一个文件或目录是否存在?如何读写文件?
18、编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
String str = “中华人民共和国”;// GB2312
byte[] b = str.getBytes(“ISO-8859-1”);
String str2 = new String(b);
19、Java中访问数据库的步骤,Statement和PreparedStatement之间的区别
1.提高代码的可读性和可维护性。
2. PreparedStatement接口用于执行预编译的SQL语句,可提高执行提高性能;Statement执行SQL语句并将数据检索到ResultSet中。
3.提高程序的安全性,防止SQL注入
20、Java中有两种方式来实现比较,一种是实现java.lang.Comprable;另一种实现java.util.Comparator.下面来谈它们两个的区别,和如何选择哪种方案比较好.
区别:
1. Comparale 接口只有一个方法: compareTo(Object obj)方法, 而Comparator接口,有两个方法:compare(Object obj1,Object obj2)和equals(Object obj)
2. Comparable 的类层次是:java.lang, 而java.util
3. 在Comparator中的compare方法里面,要对两个参数的类型进行检查,而Comparable中的compareTo只对一个参数进行检查
4.对于Comparator的equals方法,一般来说不用重写,而直接用基类Object的已经能满足大多数的需求,在这里推荐不要重写
选择哪种方案:
1. 对于Comparale比较简单而且需要比较少的工作,而且在用到TreeSet或TreeMap时,构造器不用带参数,且能每次都能用相同的的比较方法,如果用Comparable能达到目的,就最好用Comparable接口
2. 对于Comparator接口比较灵活,而且要更多一点的工作,能通过实现Comparator接口来产生很多不一样的类,而且能方便按其他的字段进行排序,同时对于基本类型数组无法用Comparator进行排序,只能用于对象的排序
21、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
答:代码如下:
package test;
class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:´"+SplitStr+"´;SplitBytes="+SplitByte);
}
public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split
Byte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ )
{
if (i==loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
public static void main(String[] args)
{
SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人
0ewldfls=103",4);
ss.SplitIt();
}
}
——————————————————J2EE——————————————————
1、jsp的内置对象及其作用
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
2、JSP的内置对象及方法
request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取
cookie, header, 和session数据的有用的方法。
response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page表示从该页面产生的一个servlet
3、jsp的动作及其作用
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个javaBean。
jsp:setProperty:设置javaBean的属性。
jsp:getProperty:输出某个javaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为java插件生成OBJECT或EMBED标记
4、JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态INCLUDE用include伪码实现并不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。
5、JAVA SERVLET API中forward() 与redirect()的区别
// forward()
RequestDispatcher rd = this.getSeervletContext().getRequestDispatcher(“/hello.jsp”);
Rd.forward(request,response);
// redirect()
response.sendRedirect(“login.jsp?errormsg=”+errormsg);
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
6、说一说Servlet的生命周期?
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。
什么情况下调用doGet()和doPost()? Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
7、描述JSP和Servlet的区别、共同点、各自应用的范围
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
尽管JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事物处理而通过Servlet来生成动态网页很不直观;JSP由HTML代码和JSP标签构成可以方便地编写动态网页因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在Sstuts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
8、在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符?
public static String filterHTML(String value){
value.replaceAll("&", "&");
value.replaceAll(" <", "<");
value.replaceAll(">", ">");
value.replaceAll("'", "'");
value.replaceAll("\"", """);
value.replaceAll("\n", " <br/>");
return value;
}
9、Cookie和Session的作用,区别和各自的应用范围,Session工作原理
10、Jsp中errorPage的作用
JSP里的ErrorPage的功能是捕获未被预料到的异常的。如果已经被写到try/catch块里的异常,是不会被ErrorPage捕获到的!
11、介绍在Jsp中如何使用JavaBeans
12、Jsp和Servlet中的请求转发分别如何实现
JSP:
<jsp:forward page= "nextpage.jsp"/>
servlet:
RequestDispatcher rd = this.getSeervletContext().getRequestDispatcher(“/hello.jsp”);
Rd.forward(request,response);
13、J2EE
J2EE 是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型 (enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
J2EE是通称,它包括了JSP, SERVLET, JAVABEAN,等等..........
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。
Java Transaction API(JTA),为分布式系统中可处理的应用程序规定了一个高级的管理规范。
Java Naming and Directory Interface(JNDI),在Java 平台与商业信息之间,JNDI提供了统一、无缝的标准化连接。通过使用JNDI,程序员可以在企业多命名与目录服务之间传送Java 应用程序。
Java Interface Definition Language(JIDL),通过使用CORBA,可以提供协同工作的能力。JIDL包括一个IDL-to-Java 编译器和支持IIOP(Internet Inter-Orb Protocol)的ORB。
JDBC,几乎是为所有的数据库提供了统一的接口,同时可以创建高级工具和接口。
Java Message Service(JMS),它几乎规范了所有企业级消息服务,如可靠查询、发布消息、订阅杂志等各种各样的PUSS/PULL技术的应用,并且为它们提供了一个标准接口。
Java Transaction API(JTA),为分布式系统中可处理的应用程序规定了一个高级的管理规范。
14、介绍J2EE、J2SE、J2ME的区别
15、J2EE是一种技术还是一种平台,他提供了那些技术
16、Web.xml的作用
17、简单介绍您所了解的MVC
MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过javaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
18、简单介绍您所了解的structs2。
19、WEB SERVICE名词解释:SOAP、UDDI,WSDL解释。
SOAP:简单对象访问协议(Simple Object Access Protocol)
UDDI:通用描述、发现及整合
WSDL:Web services 描述语言(是一个基于xml的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可读的,又是人可阅读的,这将是一个很大的好处)
20、开发中都用到了那些设计模式?用在什么场合?
Java中的23种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
singleton:单例,用来减少垃圾对象和缓存用
factory:工厂模式,用来解耦(呵呵,其实模式都是用来解耦的)
facade和decorator:封装接口
command:命令模式,传递
Iterator:用来遍历对象
Observer:用来监听状态变化(现在习惯用listener机制替代)
templete:模板模式,用来处理相同的操作步骤
strategy:策略模式,策略选择
proxy:用来附加功能,属性或隐蔽。
bridge也很实用,用来解耦工厂与产品搭配之类的选择
21、什么是UML? 标准UML都有哪些图?
UML统一建模语言
用例图、类图、序列图、状态图、活动图、组件图、部署图
22、Request对象的主要方法:
setAttribute(String name,Object):设置名字为name的request的参数值
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
23、四种会话跟踪技术 会话作用域ServletsJSP 页面描述
page是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
24、如何现实servlet的单线程模式
当一个servlet实现了SingleThreadModel接口时
25、页面间对象传递的方法request,session,application,cookie等
26.在jsp:useBean语法中使用beanName的好处
beanName使用Beans.instantiate()初始化Bean
27、Servlet执行时一般实现的方法
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()JSP
60、什么情况下调用doGet()和doPost()
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()
61、Servlet的基本架构
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
}
61、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
答:Web Service描述语言WSDL
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
JDBC
2、Class.forName的作用?为什么要用?
答:调用该访问返回一个以字符串指定类名的类的对象。
3、Jdo是什么?
答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。
- 面试题.rar (55.5 KB)
- 下载次数: 22
- java面试题.rar (3.7 KB)
- 下载次数: 19
发表评论
-
JVM Crash,生成hs_err_pid.log文件
2011-11-17 17:22 2438JVM Crash,生成了hs_err_pid.log文件,见 ... -
JVM GC日志开启
2011-06-22 15:16 2144Gc日志可以输出的文件中,通过设置-Xverbosegclog ... -
JAVA问题定位技术(3)
2010-05-30 00:01 1030JAVA 远程调试 虚拟机远程调试开关: -Xdebug ... -
JAVA问题定位技术(2)
2010-05-29 23:38 1823性能瓶颈分析 高性能 ... -
JAVA问题定位技术
2010-05-29 17:24 2448常用的JAVA调试技巧: 线程堆栈解读 性能瓶颈分析 远程调试 ... -
J2ME学习笔记
2009-02-25 13:05 701J2SE——Java 2(Software Developme ... -
java中的类反射机制
2009-02-22 22:11 867一、反射的概念 : 反 ... -
java多线程程序设计
2009-02-22 22:08 717一:理解多线程 ????多线程是这样一种机制,它允许在程序 ... -
java基础学习
2009-02-22 21:16 9911)起源: 源于sun的一个叫Green的项目,给家用电 ... -
String
2009-02-22 15:35 945package com.test; public class ... -
学习资料
2009-02-22 10:38 687java学习资料 -
常见排序法
2009-02-21 14:19 811常见排序法: public class Sort{ pub ... -
java中异常处理机制
2009-02-21 14:17 2088例外是在程序运行过程中发生的异常事件,如除0溢出、数组越界、文 ... -
我的Java Socket学习历程
2009-02-21 14:13 1274最近接到一个项目,是 ... -
java中自定义Locale转换器
2009-02-21 14:03 1183import java.util.Locale; import ... -
环境变量
2009-02-21 13:47 857classpath .;%JAVA_HOME%\lib;% ...
相关推荐
"Java复习题3"显然聚焦于帮助学习者巩固和深化对Java语言的理解。在这个复习题集中,我们可能会涉及众多Java的基础概念和高级特性。下面将就Java的一些核心知识点进行详细阐述。 1. **基本语法**: Java是一种静态...
这份"Java复习资料及例题源代码"是学习和备考Java相关考试的理想资源,包含了一系列经典例题和配套的源代码,对于深入理解和掌握Java编程的核心概念极其有益。 一、Java基础语法 在复习资料中,你可能会遇到关于...
"java复习.zip"这个压缩包包含了一份全面的Java复习资源,涵盖了Java基础知识、面试笔试题、逻辑题以及各大公司的Java题目,还特别提到了SSH框架,即Struts、Spring和Hibernate这三个流行框架的综合应用。...
java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来...
### 全国等级考试二级Java复习资料核心知识点详解 #### 一、Java的历史与现状 - **Java的历史起源** - Java的起源可以追溯到上世纪90年代初,当时Sun Microsystems公司启动了一个名为Green的项目,旨在为家用消费...
core java 复习,简单的对core java 复习
Java 复习汇总.md
Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。本文将深入探讨Java中的并发和...Java复习笔记中应该涵盖了这些内容的详细解释和实例,通过深入学习,你可以进一步巩固和提升自己的技能。
这份名为"超详细的Java复习知识点2019——个人笔记"的文档,旨在为初学者提供一个全面且深入理解Java基础知识的指南。笔记内容可能涵盖了以下几个关键领域: 1. **Java语法基础**:包括变量、数据类型、运算符、...
Java复习资料 本文档是关于Java复习资料的总结,涵盖了Java基础知识、数据库操作、SQL语句、Oracle和SQL Server的差异、日期时间函数等方面的知识点。 一、 Java基础知识 Java是一种面向对象的编程语言,允许...
这里面由我自己总结的一些Java知识点。 同时附赠一份我学习的资料,是github上的一位大神写的,非常棒的笔记,力荐!总结了Java知识、IO、http、socket、redis、git、docker,设计层次比较全,大家可以下载看看,...
Java复习题知识点总结 一、Java语言基础 * Java语言使用的字符码集是Unicode(问题1) * Java程序的主类需包含main方法,main方法的返回类型是void(问题2) 二、类和对象 * 子类在定义时需要使用extends关键字...
这个"JAVA复习题库"旨在帮助学习者巩固和深化对Java语言的理解,准备相关考试或者面试。以下是对Java核心知识点的详细阐述: 1. **Java基础** - **变量与数据类型**:Java支持基本数据类型(如int、char、boolean...
好用 实在 全面的Java复习资料 有助于你更好更全面的对所学过的东西进行复习 里面的内容丰富 涉及范围广 实用性强
### Java复习资料知识点详解 #### 一、Java平台选择 - **知识点**: 选择题1考查了Java的不同平台。Java有三个主要平台:Java SE(Standard Edition),Java EE(Enterprise Edition),Java ME(Micro Edition)。...
### JAVA复习资料知识点详解 #### 一、Java基础概述 在Java的学习过程中,为了更好地理解和掌握这门语言,我们可以通过一些具体的代码实例来深入探讨其核心概念和技术要点。本篇内容将围绕`Person.java`与`Static...
### Java复习知识点详解 #### 第一章:Java基础概念 - **Java语言的执行方式**: - Java是一种编译型语言,同时也是一种解释型语言。首先,源代码需要通过编译器转换成字节码(.class文件),然后由Java虚拟机...
这份"java复习笔记"旨在帮助学习者系统地回顾和深入理解Java的关键概念和技术,以便于提升编程技能和应对各种开发挑战。 一、基础语法 Java的基础语法包括变量、数据类型、运算符、流程控制语句等。例如,变量是...
【Java复习知识点】 Java是一种广泛使用的面向对象的编程语言,具有丰富的类库和强大的功能。在Java课程复习中,理解并掌握以下几个关键知识点至关重要: 1. 抽象类与抽象方法: - 题目中的`MyClass`被声明为抽象...