1、 创建一个webproject工程
2、 导入jar包
3、 在web.xml文件中编写核心过滤器
4、 写一个action(当struts中写了映射地址时才用写)
5、将struts.xml文件放入类路径(WEB-INF\classes)下:(可以从struts2发型包\apps\struts-blank.war中拷贝)
6、把应用部署到Tomcat中,启动Tomcat,如果没有报错,说明搭建成功
在web应用启动时就会加载初始化ActionServlet,ActionServlet从
struts-config.xml文件中读取配置信息,把它们存放到各种配置对象
当ActionServlet接收到一个客户请求时,将执行如下流程.
-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;
-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;
1、 在web.xml文件中需要配置很多行代码,维护起来很不方便,不利于团队合作
2、一个servlet的入口只有一个doPost或者doGet方法,如果在servlet中写很多个方法,代码结构会显得非常混乱。
3、servlet类与servlet容器高度耦合,每个方法中都有两个参数request,response。如果服务器不启动,这两个参数没有办法初始化。
4、如果在servlet的一个方法中有很多功能,会导致该方法相当复杂,不利于维护。
5、如果在一个servlet类中有很多方法,在浏览器中输入访问的url写起来也会相当麻烦
6、在servlet中如果获取页面上表单中的数据,那么在方法中会写很多行。
而struts恰恰帮我们解决了这系列的问题,基于Struts开发的应用由3类组件构成:控制器组件(ActionServlet/RequestProcessor/Action/ActionMapping/ActionForward)、模型组件、视图组件。
1、利用struts提供的taglib可以节约开发时间;2、维护扩展方便,通过一个配置文件即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。c、表现与逻辑分离
d、表单验证解决了请求数据的验证问题,增强了系统健壮性。
e、便于团队开发
struts的缺点:大量使用标签,对于初学者难度大,ActionForms使用无法进行单元测试
Struts提供了5个标签库,即HTML、Bean、Logic、Template和Logic
HTML 标签 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单
Bean 标签 在访问JavaBeans 及其属性,以及定义一个新的bean时使用
Logic 标签 管理条件产生的输出和对象集产生的循环
Template 标签 随着Tiles框架包的出现,此标记已开始减少使用
Titles框架为创建web页面提供了一种模板机制,能将页面的内容和布局分离。
Nested标签 增强对其他的Struts 标签的嵌套使用的能力一包含一个controller servlet,能将用户的请求发送到相应的Action对象。二JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。三提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。
1) 实现各种验证规则的Java类
2) 配置文件
3) 资源文件
4) JSP自定义标签
Validator组件可以很好地解决用户输入数据的验证问题,但它并不是一个独立运行的组件,它可以被
嵌入到目前大部分的Web应用开发框架中。Validator组件的验证方式有多种,既可以通过JavaScript脚本实现用户输入数据的页面验证,也可以实现在后台处理程序中的Java验证ActionForm属于一种数据传输对象,联系了前台页面与后台的Action方法,实现了前后台的数据转换和传递。它的作用有:
1、 在显示页面的时候用于完成页面中各种控件的初始化工作。
2、 在用户提交请求的时候,ActionForm又代表了用户所提交的数据,供Action以及后续的业务处理方法使用
3、 可以对用户提交数据的合法性进行验证
待续……