热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Struts2HelloWorld(从零开始学习Strust2_01)

struts-2.3.1.2(下载地址)结果图:Windows-Preferences-Sever-Runtime Environment(3)导入Struts2需要的包分别是:(4)修改原始的web

基本知识:Struts2框架实现的是MVC(Model View Controller)模式,在Struts2的模式中Model、View、Controller分别由Action、Result、FilterDispatcher实现 

controller的工作是将用户的请求映射到合适的action上,在Struts2中filterdispatcher做的是controller的工作,model包含数据和事务逻辑,在Struts2中由action来实现,view是MVC模式中的展示组件,在Struts2中view通常由JSP等技术实现。


开发环境:

Eclipse IDE for Java EE Developers(下载地址)

struts-2.3.1.2(下载地址)

apache-tomcat-6.0.35(下载地址)(推荐使用6.0,5.0用起来有点问题)


结果图:




开发过程:

(1)首先配置Tomcat

Windows-Preferences-Sever-Runtime Environment


(2)建立工程 - Dynamic Web Project


在点击Finish的页面上,记得在生成Web.xml上面打上勾√


(3)导入Struts2需要的包

struts-2.3.1.2中有8个必须的包


分别是:

struts2-core-2.3.1.2.jar
xwork-core-2.3.1.2.jar
freemarker-2.3.18.jar
ognl-3.0.4.jar
commons-io-2.0.1.jar(java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils)
commons-lang-2.5.jar( java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils) 
commons-fileupload-1.2.2.jar(java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException)
javassist-3.11.0.GA.jar (java.lang.ClassNotFoundException: javassist.ClassPool)

(4)修改原始的web.xml


xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
struts2_20120311_01

struts2
org.apache.struts2.dispatcher.FilterDispatcher


struts2
/*


index.jsp


web-app的头部不用修改,只修改里面的filer和welcome-file-list

FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。Struts2框架获得了*.action请求后,将根据*.action请求的*部分决定调用哪个业务逻辑。(摘自《Struts2权威指南》)如下的HelloWorld.Action。

(5)编写index.jsp和success.jsp

<%@taglib uri="/struts-tags" prefix="s"%>










success.jsp如下:

<%@taglib uri="/struts-tags" prefix="s"%>










(6)编写HelloWorld.java(struts2中,action的实现类可以继承ActionSupport 也可以不继承ActionSupport,此处没有继承)

package com.zeph.struts2;
public class HelloWorld {
private String message;
private String userName;
public HelloWorld() {
}
public String execute() {
setMessage("Hello " + getUserName());
return "SUCCESS";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}

业务控制器组件就是用户实现Action类的实例,Action类里通常包含一个execute方法,该方法返回一个字符串——该字符串就是一个逻辑视图名,当业务控制器处理完用户请求后,根据处理结果不同,execute方法返回不同字符串——每个字符串对应一个视图名。(摘自《Struts2权威指南》)


(7)编写struts.xml

配置文件中名为“default”的包空间,继承了名为struts-default的包空间,struts-default包空间定义在struts-default.xml文件中,struts2框架默认会加载struts-default.xml文件。

在struts-default的包空间里定义了struts2内建的Result类型,还定义了Struts2内建的系列拦截器,以及有不同拦截器组成的拦截器栈。摘自《Struts2权威指南》


"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">



/success.jsp



Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。(摘自《Struts2权威指南》)如上name=HelloWorld表明这个Action处理HelloWorld.Action。class对应的内容就是Action的实现类HelloWorld.java。


(8)反键点击工程 Run As - Run As Server




版权声明:本文为BenW1988原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/BenW1988/article/details/7342591
推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • 动量|收益率_基于MT策略的实战分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于MT策略的实战分析相关的知识,希望对你有一定的参考价值。基于MT策略的实战分析 ... [详细]
  • 开发笔记:MyBatis学习之逆向工程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis学习之逆向工程相关的知识,希望对你有一定的参考价值。转载:http://w ... [详细]
  • 环境Time2022-04-11Rust1.60.0前言说明基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。特点相比较二叉树,二叉搜索树的左节点都比父节点小, ... [详细]
  • Tag类:EVAL_BODY_INCLUDE在doStartTag中返回表示执行标签体的内容SKIP_BODY在doStartTag方法中返回表示不执行标签体EVAL ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • Java编程思想一书中第21章并发中关于线程间协作的一节中有个关于汽车打蜡与抛光的小例子(原书的704页)。这个例子主要展示的是两个线程如何通过wait ... [详细]
author-avatar
t53457078
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有