第一个Struts2示例
前面搭建好Struts2的开发环境之后,我们应该运行一个很简单的示例。来理解分析Struts2框架的开发过程和大致的运行原理。
首先我们大致了解一下Struts2的运行流向图:
- 首先Web Server接受客户request。
- 根据web.xml中的设置,由org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter过滤所有的请求,过滤器根据struts.xml中的配置调用与请求对应的action。
- action根据execute方法返回的字符串调用相应的jsp页面,响应给客户。
了解到Struts2的运行流向之后,我们开始入手开发第一个运行示例。
- 首先编写action:
由于strust2已经采用了非侵入式的设计,在设计action的时候不会与servlet和struts有耦合的地方。
在编写action类的时候,只需要在类中定义个返回String的execute方法即可。
本例中HelloWorld.java:
package com.jiabao.struts2;
public class HelloWorld {
private String msg;
public String getMessage(){
return msg;
}
public String execute(){
msg= "Struts2的HelloWorld!";
return "success";
}
}
说明:HelloWorld.java即为基本的action类。在当中,设置了一个字符串变量,以供在jsp页面中调用显示。后面会用到这个变量。
2.在struts.xml文件中注册action类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/validation" extends="struts-default">
<action name="helloworld" class="com.jiabao.struts2.HelloWorld">
<result name="success">/WEB-INF/pages/helloworld.jsp</result>
</action>
</package>
</struts>
说明:
package的作用类似于java中的package,来为具有相同逻辑功能代码的一组类。
可以看到在struts.xml添加了一个package标签,当中name属性为必须且要唯一,作为在struts.xml的一个标识。
namespace是声名一组action的命名空间,默认为""。(在struts1中,设置action的时候往往会有如下的配置代码,
"
<action path="/validation/helloworld"/>
<action path="/validation/Login"/>
"
可以看的出,在struts1中的配置文件中产生了重复的代码。而Struts2则在使用命名空间来改善这种代码方式。通过namespace的设置,可以统一配置具有相同访问路径的路径地址,如上struts.xml配置,访问就需要/validation/helloworld.
而extends标签继承了struts-default,这是值得推荐的。因为Struts2采用了拦截器模式,所以只有继承了struts-default,才可以使用到Struts2中所带有的核心功能。(struts-default包含在struts-core-*.jar核心包中,其中定义了很多完成struts2核心功能的拦截器)
在action标签里,可以定义一个method属性,例如<action name="helloworld" class="com.jiabao.struts2.HelloWorld" method="execute">
属性标识,在执行action的时候调用的方法。默认为execute,所以可以不显示的标出。
3.编写jsp页面
HelloWorld.jsp页面代码
${message}
上面使用了EL表达式。来调用action中的message。细心就会发现在action定义的变量时msg,而另外有一个getMessage方法返回msg变量的内容,这里也是Struts2的一个“规则”,即使页面端返回的是getMessage方法返回的值,而和变量msg没有任何关系。
这里EL表达式是在jsp2.0之后才支持的,所以使用jsp2.0以前标准的服务器并不支持以上EL代码。
插个小技巧:
当编辑struts.xml的时候如果没有代码提示,可能是因为eclipse并没有找到"http://struts.apache.org/dtds/struts-2.0.dtd",我们可以通过以下步骤手动设置。
在本地找到"struts-2.0.dtd"文件,Window-preferences-xml-xml Catalog添加这个文件即可。
- 大小: 14.9 KB
分享到:
相关推荐
struts2学习笔记,非本人所写,但有学习的价值,总结的很好,分享一个!
struts2学习笔记总结
Struts2学习笔记,介绍了struts2的基础部分
这是学习struts2时记得重点笔记,包括了一些原理,ognl语句的编写,以及如何设置拦截器等等一些基本知识,起到复习和巩固的作用
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
本人学习struts2的笔记,希望大家可以多多学习以后共同交流
namespace :对应与项目名称后面的"/"(例如Struts2_0100_Introduction后面的"/") (http://localhost:8080/Struts2_0100_Introduction/) 四、 标签 是用来解决重名的问题,例如当系统的前台和后台都有一个action...
struts2学习笔记,拦截器,action,所需jar包,从零开始
毕生学习struts2的学习笔记,整理了好久,实打实的干货
1. struts2框架的引入 1)把struts2的相关jar包导入到项目中去 2)把struts2框架的配置文件struts.xml复制粘贴到项目中的src下面(同时也可以把log4j.properties放到src下) 在这里我们主要是要的这个struts.xml文件...
Struts2框架
北京圣思园Struts2 全套笔记 课件 详解
北京圣思园张龙老师的笔记,十分珍贵的资源。特别全
这个是本人自学struts2框架时的总结笔记,里面关于struts2的基本知识很是详尽,如果想要进阶的就不要看了,这只是struts2基础的笔记,个人学习用的,绝不掺假!
学习Struts2第三天笔记
学习Struts2第四天笔记
struts2知识点:处理流程,基本配置,与servlet的API解耦,结果类型,通配符和动态方法的调用,类型转换,文件上传,拦截器,表单验证,国际化,OGNL表达式,UI标签,模型驱动,防止表单重复提交,项目练习知识点:...