简答题
一,doget与dopost的区别,简述servlet的生命周期
在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get。可在<form>中的method属性中指定提交的方式。如:<formaction="inputForm"method="get">,如果不指定method属性,则会默认该属性为”get”方式。
Get和post都能够提交数据,那么他们有什么不同呢?
不同点一:
通过get方式提交的数据有大小的限制,通常在1024字节左右。也就是说如果提交的数据很大,用get方法就可需要小心;而post方式没有数据大小的限制,理论上传送多少数据都可以。
不同点二:
通过get传递数据,实际上是将传递的数据按照”key,value”的方式跟在URL的后面来达到传送的目的的;而post传递数据是通过http请求的附件进行的,在URL中并没有明文显示。
详情可见:http://blog.csdn.net/luoweifu/article/details/7865243
二,简述servlet的生命周期
}载入:第一次请求的时候被初始化,只一遍
}初始化:调用init方法,只一遍
}执行:每个请求,new一个新的线程,调用一遍service super.service doGet/doPost
–不要 在servlet中设计成员变量(多个请求线程共享,会发生资源冲突问题!)。
–doGet,doPost常见异常:
–HTTPStatus 405 - HTTP method POST(GET) isnot :
–supportedby this URL:增加doPost()或doGet()方法即可。
}销毁卸载前调用destroy方法。子类servlet一般不需要覆盖这个方法。
}
}
在非分布的情况下
,
通常一个
Servlet
在服务器中有一个实例
详情可见:
http://www.cnblogs.com/liuling/archive/2012/07/14/2012-7-14.html
三,单例模式的定义,尝试写出你所知道的写法
首先,单例模式是对象的创建模式之一,此外还包括工厂模式。单例模式的三个特点:
1,该类只有一个实例
2,该类自行创建该实例(在该类内部创建自身的实例对象)
3,向整个系统公开这个实例接口
详情可见:http://www.cnblogs.com/rush/archive/2011/10/30/2229565.html
数据库
Student(S#,Sname,Sage,Ssex)
学生表
Course(C#,Cname,T#)
课程表
SC(S#,C#,score)
成绩表
Teacher(T#,Tname)
教师表
问题:
1
、查询“
001
”课程比“
002
”课程成绩高的所有学生的学号;
select
a.S#
from
(
select
s#,score
from
SC
where
C#
=
'001'
) a,
(
select
s#,score
from
SC
where
C#
=
'002'
) b
where
a.score
>
b.score
and
a.s#
=
b.s#;
2
、查询平均成绩大于
60
分的同学的学号和平均成绩;
select
S#,
avg
(score)
from
sc
group
by
S#
having
avg
(score)
>
60
;
3
、查询所有同学的学号、姓名、选课数、总成绩;
select
Student.S#,Student.Sname,
count
(SC.C#),
sum
(score)
from
Student
left
Outer
join
SC
on
Student.S#
=
SC.S#
group
by
Student.S#,Sname
4
、查询姓“李”的老师的个数;
select
count
(
distinct
(Tname))
from
Teacher
where
Tname
like
'
李
%'
;
5
、查询没学过“叶平”老师课的同学的学号、姓名;
select
Student.S#,Student.Sname
from
Student
where
S#
not
in
(
select
distinct
( SC.S#)
from
SC,Course,Tea
cher
where
SC.C#
=
Course.C#
and
Teacher.T#
=
Course.T#
and
Teache
r.Tname
=
'
叶平
'
);
6
、查询学过“
001
”并且也学过编号“
002
”课程的同学的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC
where
Studen
t.S#
=
SC.S#
and
SC.C#
=
'001'
and
exists
(
Select
*
from
SC
as
SC_2
where
SC_2.S#
=
SC.S#
and
SC_2.C#
=
'002'
);
7
、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
select
S#,Sname
from
Student
where
S#
in
(
select
S#
from
SC ,Course ,Teacher
where
SC.C#
=
C
ourse.C#
and
Teacher.T#
=
Course.T#
and
Teacher.Tname
=
'
叶平
'
grou
p
by
S#
having
count
(SC.C#)
=
(
select
count
(C#)
from
Course,Teach
er
where
Teacher.T#
=
Course.T#
and
Tname
=
'
叶平
'
));
8
、查询课程编号“
002
”的成绩比课程编号“
001
”课程低的所有同学的
学号、姓名;
Select
S#,Sname
from
(
select
Student.S#,Student.Sname,score ,
(
select
score
from
SC SC_2
where
SC_2.S#
=
Student.S#
and
SC_2.C#
=
'002'
) score2
from
Student,SC
where
Student.S#
=
SC.S#
and
C#
=
'001'
) S_2
wher
e
score2
<
score;
9
、查询所有课程成绩小于
60
分的同学的学号、姓名;
select
S#,Sname
from
Student
where
S#
not
in
(
select
Student.S#
from
Student,SC
where
S.S#
=
SC.S#
and
score
>
60
);
10
、查询没有学全所有课的同学的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC
where
Student.S#
=
SC.S#
group
by
Student.S#,Student.Sname
h
aving
count
(C#)
<
(
select
count
(C#)
from
Course);
详情可见:
详情可见: