1、描述Struts体系结构?对应各个部分的开发工作主要包括哪些?
Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如下图2所示:
1
)模型(
Model
)
在
Struts
的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组
Actinform Bean
表示。根据设计或应用程序复杂度的不同,这些
Bean
可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的
bean
调用。比如购物车
bean
,它拥有用户购买商品的信息,可能还有
checkOut()
方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在
Action
类,它是
struts
框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与
Action
类所扮演的角色(决定做什么)分开。
2
)视图(
View
)
视图主要由
JSP
建立,
struts
包含扩展自定义标签库(
TagLib
),可以简化创建完全国际化用户界面的过程。目前的标签库包括:
Bean Tags
、
HTML tags
、
Logic Tags
、
Nested Tags
以及
Template Tags
等。
3
)控制器(
Controller
)
在
struts
中,基本的控制器组件是
ActionServlet
类中的实例
servelt
,实际使用的
servlet
在配置文件中由一组映射(由
ActionMapping
类进行描述)进行定义。对于业务逻辑的操作则主要由
Action
、
ActionMapping
、
ActionForward
这几个组件协调完成的,其中
Action
扮演了真正的业务逻辑的实现者,
ActionMapping
与
ActionForward
则指定了不同业务逻辑或流程的运行方向。
struts-config.xml
文件配置控制器。
2. XML包括哪些解释技术,区别是什么?
包括:DOM(Document Object Modal)文档对象模型,SAX(Simple API for XML)。DOM是一次性将整个文档读入内存操作,如果是文档比较小,读入内存,可以极大提高操作的速度,但如果文档比较大,那么这个就吃力了。所以此时SAX应用而生,它不是一次性的将整个文档读入内存,这对于处理大型文档就比较就力了
3. JSP有哪些内置对象和动作?它们的作用分别是什么?
JSP共有以下9种基本内置组件:
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
常用的组件:request、response、out、session、application、exception
4、SQL问答题
SELECT * FROM TABLE
和
SELECT * FROM TABLE
WHERE NAME LIKE '%%' AND ADDR LIKE '%%'
AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'
OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )
的检索结果为何不同?
答:
我做了一下测试,在ACCESS里面,用它的查询,这样会和在MYSQL得到不同的结果,各位不妨试试,我昨天就是在ACCESS里用SQL查询,得到的结果为空,就是没有记录;而在MYSQL里面,条件为空的记录不显示,其它的都显示。
5、SQL问答题
表结构:
1、 表名:g_cardapply
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_applydate bigint 8;//申请日期
g_state varchar 2;//申请状态
2、 表名:g_cardapplydetail
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_name varchar 30;//申请人姓名
g_idcard varchar 18;//申请人身份证号
g_state varchar 2;//申请状态
其中,两个表的关联字段为申请单号。
题目:
1、 查询身份证号码为440401430103082的申请日期
Select g_cardapply.g_ applydate from g_cardapply, g_cardapplydetail where g_cardapplydetail.g_idcard=’’ and g_cardapply.g_applyno=g_cardapplydetail.g_applyno
2、 查询同一个身份证号码有两条以上记录的身份证号码及记录个数
3、 将身份证号码为440401430103082的记录在两个表中的申请状态均改为07
Update g_cardapply. g_state=’07’, g_cardapplydetail .g_state
4、 删除g_cardapplydetail表中所有姓李的记录
------------------------******测试******-----------------
create database mianshi
use mianshi;
create table g_cardapply(
g_applyno varchar(8),
g_applydate bigint,
g_state varchar(20)
)
go
create table g_cardapplydetail(
g_applyno varchar(8),
g_name varchar(30),
g_idcard varchar(18),
g_state varchar(20)
)
1、select a1.g_applydate from g_cardapply as a1 inner join g_cardapplydetail a2 on
a1.g_applyno=a2.g_applyno where a2.g_idcard="123" ;
2、select g_idcard,count(g_idcard) from g_cardapplydetail
group by g_idcard having count(g_idcard)>=2;
3、update g_cardapply set g_state=603 from g_cardapply as g_d inner join g_cardapplydetail as g_c on
g_d.g_applyno=g_c.g_applyno and g_idcard='123';更新第一个表的g_state
update g_cardapplydetail set g_state=603 where g_idcard='123';