structs 的学习
目录
环境:eclipse+struts
一初步了解
二、环境搭建和技术和技术准备
web.xml配置:
搭建structs1.x框架
代码实现:
struts 运行机制:
struts标签:
问题:
apache基金会的开源项目
运用MVC思想的框架
MVC=程序分层设计的思想=Model(数据访问层1)+View(视图层3)+Control(控制层2)
版本:structs 1.x 已过时
2.x 本来叫做WebWork,也是apache的一个开源框架,参照structs1.x开发的一套框架
学习structs1的必要性:
1、老项目需要维护
2、学习1之后,学习2会很简单
注意:mvc思想是一种程序设计思想,是所有开发语言都有的,不是Java特有
structs1.x 基于Servlet (2.x基于Filter)
1、servlet的注解配置方式和web.xml配置方式
注意:servlet3.0之前,eclipse默认不生成web.xml
Generate depeloyment(部署) descriptor(描述符)
注解配置:像代码一样,简单,可通过ide生成,但将数据写死了,改initParam需要对程序重新打包
*/
@WebServlet(
description = "This is a servlrt",
urlPatterns = { "/MyUrl" },
initParams = {
@WebInitParam(name = "pageSize", value = "15")
})
1:配置servlet
a
javastudy.MyServlet
pageSize
15
a
/myurl
2:配置jsp
b
/test.jsp
pagesize
30
b
/newurl
步骤:1、复制jar包
2、修改web.xml文件(找示例程序的web.xml拷贝,或者网上找http://miaoxianjie.iteye.com/blog/1150236
3、添加structs-config.xml
项目学习:
功能:注册:(输入检查,重复用户名检查)
登陆:(输入),登陆成功后在主页面上显示当前登陆用户
用户的增删改查:
C=Create=增 insert
R=Retrieve=读取 select
U=Update=修改 update
D=Delete =删除 delete
项目需求:
1、注册:(输入检查,重复用户名检查)
2、登陆:(输入),登陆成功后在主页面上显示当前登陆用户
3、登陆成功:显示在线用户
数据库的搭建
1、user类继承actionForm(必须,)
2、在structs-config.xml 中注册User对象
FormBean的概念:一些反复编写,毫无技术含量的代码,均有框架来实现,比如
User user=new User();
getParameter…………
FormBean作用:给action提供数据
3、编写UserDao的方法addUser
4、编写AddUserAction,添加用户,此类必须继承Action
5、配置AddUserAction,path,name,scope,forward,添加成功后直接转向userlist.jsp
分析struts的运行机制
struts是一个框架
action中 return null;表示不跳转,action中可以通过response对象进行输出(输入到网页上)。
(1) global forwards : 配置全局转向目的地(forward)
(2) formbean命名的问题,不要搞的太复杂
userForm表明是formbean,一般不用加form
(3) action的命名方式
path="/adduser" type="myuser.AddUserAction"//
execute方法中调用DAO - addUser
struts .xml:action中action与forward重要属性
1、forward的redirect 是bool
true: 容器外跳转 ,可转到站外,地址栏显示转向的页面,
和跳转到的页面不是同一次服务器请求,不共享request
相当于response.sendRedirect("/test.jsp");
false(默认值): 容器内跳转,地址显示前一个action的地址,不显示转向页面的地址
不能转到站外地址www.baidu.com
相当于ResponseDispatcher rd=request.getRequest.Dispatcher("/test.jsp")
2、action中的scope属性 可以为request,session
3、action中的attribute的值一般省略,其值默认和name下相同.
表示在request和session中保存formbean时,为formbean取得名字。
例如:
这里用${user.userName}是取不到值的,而是用${hello.userName}拿到值
了解struts metaInf下的几个tld文件的用途
参考链接
bean:用来创建bean、访问bean和访问bean的属性。
html:用来创建Struts输入表单。
logic:用来进行逻辑判断、集合迭代和流程控制。
nested:建立在前三个标签库的基础上,具有前三个标签库的所有功能,只是允许标签间的嵌套。
tiles:用来创建tiles样式的页面。
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
8月22日10点39分:
DispatchAction:将所有用户有关的action放到一个action来处理
编写一个class 继承DispactchAction,在这之前需要导入包:struts-extras-1.3.10.jar,重写execute方法(其实里面的代码就没有动过·,然后copy几个放到下面,名字改成
add,delete等(这些是之前单独deaction的对user的操作,将对应的代码copy进去)单个action都放到UserAction中后,之前的就可以删除了,再修改struts-config.xml,配置这个新的action,注意有一个 parmeter属性,这个代表了你将要使用UserAction中的摸某一个方法
示例:
调用时:$.post("user.do?op=checkExists"…………………………
注意如果将main.jsp放在WEB-INF下,就不能直接访问,需要配置struts-config.xml,通过.do才能访问
配置如下:
登陆时:利用ajax请求验证密码与账户是否匹配,出现所有人都能登陆
原因:ajax默认是异步请求,所以,直接提交登陆了
解决:$.ajaxSetup({//设置ajax请求是同步的,akax默认是异步的
async: false//设置为同步请求
});
structs1.3api文档使用方法
1、Action 类 execute方法
2、ActionMapping 对应
3 ActionForward对应
4 formbean
编写struts框架,主要用到反射的方法
上传文件,国际化,错误处理(structs-config.xml中配置,工作中不用),验证
线程安全:多个请求共用一个action实例