struts1.x学习
环境:eclipse+struts
structs 的学习
目录
一初步了解
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")
})
web.xml配置:
1:配置servlet
<servlet>
<servlet-name>a</servlet-name>
<servlet-class>javastudy.MyServlet</servlet-class>
<init-param>
<param-name>pageSize</param-name>
<param-value>15</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>a</servlet-name>
<url-pattern>/myurl</url-pattern>
</servlet-mapping>
2:配置jsp
<servlet>
<servlet-name>b</servlet-name>
<!--注意 是/test.jsp 少了'/' tomcat会启动失败-->
<jsp-file>/test.jsp</jsp-file>
<init-param>
<param-name>pagesize</param-name>
<param-value>30</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>b</servlet-name>
<url-pattern>/newurl</url-pattern>
</servlet-mapping>
搭建structs1.x框架
步骤: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
<form-Beans>
<form-bean name="user" type="myuser.User"></form-bean>
</form-Beans>
<action-mapping>
<action path="/adduser" type="myUser.AdduserAction" >
</action><!--默认scope是session,另一值是request-->
</action-mapping>
struts 运行机制:
分析struts的运行机制
struts是一个框架
action中 return null;表示不跳转,action中可以通过response对象进行输出(输入到网页上)。
(1) global forwards : 配置全局转向目的地(forward)
<global-forwards>
<forward name="list" path="/userlist.jsp"></forward>
</global-forwards>
(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取得名字。
例如:<action path="/adduser" type="myuser.AddUserAction" name="user" scope="session" attribute="hello">
这里用${user.userName}是取不到值的,而是用${hello.userName}拿到值
struts标签:
了解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中的摸某一个方法
示例:<action path="/user" type="myuser.UserAction" name="user" parameter="op"></action>
调用时:$.post("user.do?op=checkExists"…………………………
注意如果将main.jsp放在WEB-INF下,就不能直接访问,需要配置struts-config.xml,通过.do才能访问
配置如下:
<action path="/main" type="org.apache.struts.actions.ForwardAction" parameter="/WEB-INF/page/main.jsp"></action>
问题:
登陆时:利用ajax请求验证密码与账户是否匹配,出现所有人都能登陆
原因:ajax默认是异步请求,所以,直接提交登陆了
解决:$.ajaxSetup({//设置ajax请求是同步的,akax默认是异步的
async: false//设置为同步请求
});
structs1.3api文档使用方法
1、Action 类 execute方法
2、ActionMapping 对应
<action path="/user" type="/myuser.UserAction" name="user" parameter="op"></action>
3 ActionForward对应
<forward name="list" path="/userlist.jsp" redirect="true"></forward>
4 formbean
编写struts框架,主要用到反射的方法
上传文件,国际化,错误处理(structs-config.xml中配置,工作中不用),验证
线程安全:多个请求共用一个action实例
上一篇: Play1.2.7 如何升级到 Play1.5.2
下一篇: Linux jar包 后台运行
推荐阅读
-
Spring学习之依赖注入的方法(三种)
-
Sql学习第二天——SQL DML与CTE概述
-
Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示
-
Sql学习第三天——SQL 关于CTE(公用表达式)的递归查询使用
-
Sql学习第三天——SQL 关于with ties介绍
-
Sql学习第一天——SQL 练习题(建表/sql语句)
-
Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识
-
Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
-
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
-
谷歌seo优化指南,教你如何快速学习谷歌搜索引擎优化知识