1、jsp有哪些内置对象?作用分别是什么?
答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
2.Servlet的生命周期
1.创建Servlet对象,通过服务器反射机制创建Servlet对象,第一次请
求时才会创建。(默认)
2,调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次;
3,响应请求,调用service()或者是doGet(),doPost()方法来处理请求,这些方法是运行的在多线程状态下的。
4, 在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet对象。
Struts2和springmvc的区别
1.springmvc入口是一个servlet前端控制器(DispatcherServlet),struts2入口是一filter过滤器(StrutsPrepareAndExecuteFilter).
2.struts2通过在action类中定义成员变量接收参数,(属性驱动和模型驱动),它只能使用多例模式管理action.
springmvc通过在coontroller方法中定义形参接收参数,springmvc可以使用单例模式管理controller.
3.springmvc是基于方法开发的,注解开发中使用requestMapping将url和方法进行 映射,如果根据url找到controller类的方法生成一个handler处理器对象(只包括一个method).
struts2是基于类开发的,每个请求过来创建一个action实例,实例对象中有若干个方法.
开发中建议使用springmvc,springmvc方法更类似service业务方法.
4.struts2采用值栈存储请求和相应的数据,通过OGNL存取数据,springmvc通过参数绑定期将request请求内容解析,并给方法形参赋值.
5.struts2和springmvc的速度是相当的,由于struts2的漏洞较多,跟多企业使用springmvc
1.== 比较的是什么?
对于对象引用类型:“==”比较的是对象的内存地址。
public static void main(String[] args){
String a = new String("aw");
String b = new String("aw");
String c= "aa";
String d= "aa";
System.out.println(a==b);//false
System.out.println(c==d);//true
}
2.Java支持的数据类型有哪些?什么是拆装箱?
Java中有八种基本数据类型以及引用类型
基本数据类型:
byte(1字节),short(2字节),int(4字节),long(8字节),char(2字节),boolean(不确定,取值是true/false),float(4字节),double(8字节) 一个字节8位
引用数据类型:
包括string、数组,集合,字符串,接口以及类等
自动装箱/自动拆箱
就是指基本数据类型可以和其对应包装类之间自动转换
3. 值传递与引用传递
值传递:方法调用时,实际参数把它的值的副本传递给对应的形式参数。特点:此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。
引用传递:方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;特点:在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。
4.String是基本的数据类型吗?
String不是基本的数据类型,是final修饰的java类,是引用数据类型。
5.Java中的abstract(抽象的方法和类),final ,不能被继承的类,static修饰的方法和属性
用abstract修饰的类称为抽象类:
加abstract的方法称为抽象的方法
抽象的类只能被继承,不能被实例化
抽象的类中,方法是抽象的,不写方法体
抽象的方法必须定义在抽象类中
抽象类中的方法不一定都是抽象的方法(比如set get 方法)
抽象类的子类必须重写父类的抽象方法,除非子类也是抽象类
如果子类也是抽象类,可以不去实现父类的抽象方法
final:
用final修饰的方法不能被子类重写
用final修饰的属性可以被继承,不能被修改,称为常量属性
用final修饰的类不能被继承,称为常量类
不能被继承的类:
String StringBuffer Scanner
static(用static修饰的方法和属性是类的属性和方法):
静态方法只能访问静态数据成员;
在static方法中不能调用对象的属性和方法(因为对象的属性和方法在直接调用时还没有初始化,但static修饰的属性和方法不需要初始化)
对象的方法可以调用static修饰的属性和方法
6.
public static void main(String[] args) {
int i=1;
System.out.println(i++); //i=1,i++,i=2
System.out.println(++i); //i=3
}
7.我们在 web 应用开发过程中经常遇到输出某种编码的字 符, 如 iso8859-1 等, 如何输出一个某种编码的字符串?
public String translate (String str) {
String tempStr = "";
try {
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
tempStr = tempStr.trim();
}catch (Exception e) {
System.err.println(e.getMessage());
}
return tempStr;
}
8.Java中&和&&的区别
这两者都是表示逻辑与,只有当两边都是true时,返回true,只要有一个false则结果返回false。
&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式,
&还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时, &表示按位与操作,