Struts 2下的helloword(2)

2019-04-08 18:57

经常见到一些有两三年开发经验的程序员,一旦离开了熟悉的IDE(集成开发环境,如Eclipse、JBuilder等),完全不能动手写任何代码。而他们往往还振振有词:谁会不用任何工具来开发?

实际上,真正优秀的程序员当然可以使用IDE工具,但即使使用VI(UNIX下无格式编辑器)、记事本也一样可以完成非常优秀的项目。笔者对于IDE工具的态度是:可以使用IDE工具,但绝不可依赖于IDE工具。学习阶段,千万不要使用IDE工具;开发阶段,才去使用IDE工具。

提醒 对于IDE工具,业内有一个说法:IDE工具会加快高手的开发效率,但会使初学者更白痴。 为了让读者更加清楚Struts 2应用的核心,笔者下面将“徒手”建立一个Struts 2应用。 建立一个Web应用请按如下步骤进行。 在任意目录新建一个文件夹,笔者将以该文件夹建立一个Web应用。 在第1步所建的文件夹内建一个WEB-INF文件夹。 进入Tomcat,或任何Web容器内,找到任何一个Web应用,将Web应用的WEB-INF下的web.xml文件复制到第2步所建的WEB-INF文件夹下。 修改复制的web.xml文件,将该文件修改成只有一个根元素的XML文件,修改后的web.xml文件代码如下: 在第2步所建的WEB-INF路径下,新建两个文件夹:classes和lib,它们分别用于保存单个*.class文件和JAR文件。 经过上面步骤,已经建立了一个空Web应用。将该Web应用复制到Tomcat的webapps路径下,该Web应用将可以自动部署在Tomcat中。 将2.2节所定义的JSP页面文件复制到第1步所建的文件夹下,该JSP页面将成为该Web应用的一个页面。该Web将有如下文件结构: Struts2qs |-WEB-INF | |-classes | |-lib | |-web.xml |-login.jsp 上面的Struts2qs是Web应用所对应文件夹的名字,可以更改;login.jsp是该Web应用下JSP页面的名字,也可以修改。其他文件夹、配置文件都不可以修改。 启动Tomcat,在浏览器中浏览2.2节定义的JSP页面,将看到如图2.1所示的页面。 2.3.2 增加Struts 2功能 为了给Web应用增加Struts 2功能,只需要将Struts 2安装到Web应用中即可。在Web应用中安装Struts 2框架核心只需要经过如下三个步骤。 修改web.xml文件,在web.xml文件中配置Struts 2的核心Filter。 将Struts 2框架的类库复制到Web应用的WEB-INF/lib路径下。 在WEB-INF/classes下增加struts.xml配置文件。 下面是增加了Struts 2功能后Web应用的文件结构: Struts2qs |-WEB-INF | |-classes(struts.xml) | |-lib(commons-logging.jar,freemarker.jar,ognl.jar,struts2-core.jar,xwork.jar) | |-web.xml |-login.jsp 在上面的文件结构中,lib下Struts 2框架的类库可能有版本后缀。例如commons-logging.jar,可能是commons-logging-1.1.jar;struts2-core.jar可能是struts2-core-2.0.6.jar。

修改后的web.xml文件在2.1节已经给出了,故此处不再赘述。

此处需要给读者指出的是,Struts 2的Web应用默认需要Java 5运行环境,需要Web容器支持Servlet API 2.4和JSP API 2.0。如果读者需要使用更低版本的Java运行时环境,则需要使用Struts 2框架的JDK 1.4支持。为了简单起见,笔者建议读者使用Java 5运行时环境,使用Tomcat 5.5或者更高版本。

注意 Struts 2应用默认需要Java 5运行时环境,需要支持Servlet API 2.4和JSP API 2.0的Web容器。 2.4 实现控制器 前面介绍MVC框架时,已经指出:MVC框架的核心就是控制器。当用户通过2.2节的页面提交用户请求时,该请求需要提交给Struts 2的控制器处理。Struts 2的控制器根据处理结果,决定将哪个页面呈现给客户端。 2.4.1 实现控制器类 Struts 2下的控制器不再像Struts 1下的控制器,需要继承一个Action父类,甚至可以无需实现任何接口,Struts 2的控制器就是一个普通的POJO。 实际上,Struts 2的Action就是一个包含execute方法的普通Java类,该类里包含的多个属性用于封装用户的请求参数。下面是处理用户请求的Action类的代码: //Struts 2的Action类就是一个普通的Java类 public class LoginAction { //下面是Action内用于封装用户请求参数的两个属性 private String username; private String password; //username属性对应的getter方法 public String getUsername() { return username; }

//username属性对应的setter方法 public void setUsername(String username) {

this.username = username; }

//password属性对应的getter方法 public String getPassword() {

return password; }

//password属性对应的setter方法 public void setPassword(String password) {

this.password = password; }

//处理用户请求的execute方法

public String execute() throws Exception {

//当用户请求参数的username等于scott,密码请求参数为tiger时,返回success 字符串

//否则返回error字符串

if (getUsername().equals(\&& getPassword().equals(\) {

return \} else {

return \} } }

上面的Action类是一个再普通不过的Java类,该类里定义了两个属性:username和password,并为这两个属性提供了对应的setter和getter方法。除

此之外,该Action类里还包含了一个无参数的execute方法——这大概也是Action类与POJO唯一的差别。实际上,这个execute方法依然是一个很普通的方法,既没有与Servlet API耦合,也没有与Struts 2 API耦合。

提示 表面上看起来,该Action的两个属性只提供了对应的setter和getter方法,很难理解请求参数在什么时候赋值给该Action的属性,事实上,因为Struts 2的拦截器机制,它们负责解析用户的请求参数,并将请求参数赋值给Action对应的属性。 2.4.2 配置Action

上面定义了Struts 2的Action,但该Action还未配置在Web应用中,还不能处理用户请求。为了让该Action能处理用户请求,还需要将该Action配置在struts.xml文件中。

前面已经介绍过了,struts.xml文件应该放在classes路径下,该文件主要放置Struts 2的Action定义。定义Struts 2 Action时,除了需要指定该Action的实现类外,还需要定义Action处理结果和资源之间的映射关系。下面是该应用的struts.xml文件的代码:

\Software Foundation//DTD Struts Configuration 2.0//EN\\

上面映射文件定义了name为login的Action,即:该Action将负责处理向login.action URL请求的客户端请求。该Action将调用自身的execute方法处理用户请求,如果execute方法返回success字符串,请求将被转发到/welcom


Struts 2下的helloword(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:班级操行量化评分细则1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: