转载 初学者必看——最简单最清晰的Struts2项目搭建流程
https://blog.csdn.net/key0323/article/details/50773499
在项目中想要使用Struts2框架,我该怎么做?从哪里开始?这是我的疑惑,我想也是很多初学者最大的疑惑。网上的论知识应有尽有,详细的说明与操作过程却是凤毛麟角。这两天的学习过程很有收获,因此在这里记录下来分享给大家,感觉会对初学者很有帮助。如果您对Struts框架已经有所了解,那么请抱着分析指正的态度来看。
之前学习JavaWEB的时候曾经粗略的学习过一段时间的Struts2框架,相关概念与原理了解了很多。但转了一大圈下来,还是一头雾水,最大的疑问来自于。我现在想要搭建一个Struts的项目,那么究竟应该从哪开始怎么去做呢?。最近正在准备做毕业设计,项目打算使用SSH2的框架,因为作为一个未来的JavaWEB开发者,感觉Struts最基本的了解和使用还是应该掌握的,因此强逼着自己照着书上的案例一步一步做,完成几个小的案例。经过两天时间的努力,终于对于如何使用Struts搭建一个项目有了初步的认识。感觉网上这样详细而且具体的搭建流程几乎没有,但作为初学者却是最为需要的。因此在这里整理发布出来
这篇博文不讲任何的原理与概念,因为相关的知识网上一抓一大把。由于个人的水平所限,因此本文所有的观点仅代表我个人的理解,不保证完全正确。如果有什么错误还请各位及时指正。
本文的案例来自于《JavaWeb入门经典》一书
下面开始正题
第一个struts程序——最简单的Struts程序
个人对于struts运行过程的理解:
1、项目启动时会读取 web.xml 中配置的内容
- <filter-name >struts2 </filter-name >
- <filter-class>
- org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
- </filter-class>
- </ filter>
- < filter-mapping>
- <filter-name >struts2 </filter-name >
- <url-pattern >/* </url-pattern >
- </ filter-mapping></span>
这段代码基本上是固定不变的
- <span style="font-size:18px;"><struts>
- <package name ="welcomePackage" extends="struts-default">
- <action name ="first">
- <result >/first.jsp </result >
- </action >
- </package >
- </struts></span>
<action>标签里写的是action的名字
<result>标签里写的是处理过后返回的页面,这里没有写result的name属性,默认为success也就是处理成功返回的页面,关于Action中自带的5中状态,这里不再多讲。
3、创建相应的JSP页面
请求页Index.jsp
在body中加入这个链接<a href="first.action">请求struts</a>
响应页first.jsp
这里我们只演示页面成功跳转,因此first页面什么都不写也可以
4、向Tomcat服务器发布项目
这里要注意一点 在MyEclipse中Deploy type时选择Packaged Archive(production mode)这样做,系统会把库中所依赖的jar包复制到WEB-INF的lib文件夹下,这样在tomcat服务器启动的时候,系统会从lib中读取到依赖的jar包
至此,我们的项目就可以运行了。打开Index.jsp页面点击链接,我们可以看到页面地址栏中显示的是first.action,而页面正常跳转到了first.jsp。
这样我们就搭建了一个最简单的Struts项目
第二个Struts程序——一个带有动态Action的Struts程序
通过动态Action程序的学习,就可以掌握普通Action的方式,因此在这里讲述一个动态Action的Struts程序。
开始:
1、新建项目,添加struts 特性/jar包,在web.xml中注册struts 2过滤器。具体操作前面已经介绍,这里不再赘述
2、创建Action,分别在其中编写相应的方法
- <span style="font-size:18px;">import com.opensymphony.xwork2.ActionSupport;
- public class UserAction extends ActionSupport { //注意这里要继承ActionSupport类
- private String info;
- public String getInfo() {
- return info;
- }
- public void setInfo(String info) {
- this. info = info;
- }
- public String add () throws Exception {
- setInfo( "添加用户信息" );
- return "add"; //返回到struts.xml中,struts根据返回的字符串选择要跳转的result页面
- }
- public String update() throws Exception {
- setInfo( "修改用户信息" );
- return "update";
- }
- }</span>
3、配置Struts.xml,加入我们需要的action以及相应的返回页面
- <span style="font-size:18px;"><struts>
- <package name ="user" extends="struts-default">
- <action name ="userAction" class= "com.dukew.UserAction">
- <result name ="add">user_add.jsp</ result> <!-- 在这里设置不同返回值要跳转到的页面 -->
- <result name ="update">user_update.jsp</ result>
- </action >
- </package >
- </struts></span>
这样我们就完成了一个简单的具有动态Action Struts程序
第三个Struts程序——制作一个简单的用户注册表单
认真的完成了前两个程序加上之前学习的Struts2的理论基础(如果对Struts理论性知识还有不明白的可以参考作者之前的笔记
【JavaWeb】【笔记】《JavaWeb入门经典》 第15章 Struts框架)
决定自己动手来制作一个简单却很常用的用户注册表单
开始:
- 新建项目
- 加入struts特性/jar包
- 在web.xml中注册struts2过滤器
- 创建jsp页面
index.jsp- <span style="font-size:18px;"> <body>
- <h1>用户注册</h1>
- <fieldset>
- <legend>注册信息</legend>
- <form action="userRegister">
- <ul style="list-style-type: none;">
- <li>用户名:<input type="text" name="name">
- <li>密 码: <input type="password" name="password">
- <li>性 别:
- 男<input type="radio" name="sex" id="male" value="male">
- 女<input type="radio" name="sex" id="female" value="female">
- <li>提交信息是否正确:
- 正确<input type="radio" name="validate" id="validate_true" value="true">
- 错误<input type="radio" name="validate" id="validate_false" value="false">
- <li> <input type="submit" value="注册">
- </ul>
- </form>
- </fieldset>
- </body></span>
这里我们添加了一个单选钮,让我们可以模拟页面中出现错误的情况
- 创建Action
- <span style="font-size:18px;">import com.opensymphony.xwork2.ActionSupport;
- public class UserRegister extends ActionSupport {
- private static final long serialVersionUID = 1L;
- private String name;
- private String password;
- private String sex;
- private boolean validate;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public boolean isValidate() {
- return validate;
- }
- public void setValidate(boolean validate) {
- this.validate = validate;
- }
- @Override
- public String execute() throws Exception{
- if(validate==true){
- return SUCCESS;
- } else {
- return ERROR;
- }
- }
- }</span>
注意action中的属性名要和jsp页面中表单的 name 属性保持一致(这样就可以完成属性值的自动装配)
- 编写struts.xml配置文件
- <span style="font-size:18px;"><struts>
- <package name="myPackage" extends="struts-default">
- <action name="userRegister" class="com.dukew.UserRegister">
- <result name="success">success.jsp</result>
- <result name="error">error.jsp</result>
- </action>
- </package>
- </struts> </span>
注意action name属性要和jsp页面form提交的action保持一致
根据不同的result返回相应的页面,注意这里的result要和Action中return的值相同,如果Action中返回的是5个常量状态,result的name属性应写成小写。 - 编写result返回的JSP页面
这个页面可以使用strust的s:property标签获取到Action中的属性
success.jsp- <span style="font-size:18px;"> <body>
- <ul style="list-style-type: none;">
- <li>欢迎:<s:property value="name"/>!</li>
- <li>您现在的密码是:<s:property value="password"/></li>
- <li>您的性别是:<s:property value="sex"/></li>
- </ul></span>
error.jsp
页面内容不重要,这里不再贴出
转载 初学者必看——最简单最清晰的Struts2项目搭建流程的更多相关文章
- 15个初学者必看的基础SQL查询语句
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插 ...
- mysql进阶(二十六)MySQL 索引类型(初学者必看)
mysql进阶(二十六)MySQL 索引类型(初学者必看) 索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型. 在数 ...
- java初学者必看之构造方法详细解读
java初学者必看之构造方法详细解读 构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法. 格式 public 类名称(参数类型 参数名称){ 方法体 } 注 ...
- web前端开发初学者必看的学习路线(附思维导图)
很多同学想学习WEB前端开发,虽然互联网有很多的教程.网站.书籍,可是却又不知从何开始如何选取.看完网友高等游民白乌鸦无私分享的原标题为<写给同事的前端学习路线>这篇文章,相信你会有所收获 ...
- 超简单的react和typescript和引入scss项目搭建流程
1.首先我们先创建一个react项目,react官网也有react项目搭建的命令 npx create-react-app my-app cd my-app 2.安装我们项目需要的样式依赖,这个项目我 ...
- Yii初学者必看(转载)
Active Record (AR) 是一个流行的 对象-关系映射 (ORM) 技术. 每个 AR 类代表一个数据表(或视图),数据表(或视图)的列在 AR 类中体现为类的属性,一个 AR 实例则表示 ...
- springmvc最简单的搭建,初学者必看
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- Python初学者必看(1)
python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- UI设计初学者必看,这款设计神器教你快速入门
网络时代,网页和手机App已经深入到人们生活的方方面面.这也使得App界面设计越来越受青年求职者们的青睐,并纷纷投入这个行业.但是,作为UI设计初学者,究竟如何才能快速的入门?当今市场上,是否有那么一 ...
随机推荐
- 特朗普或出席!富士康耗资100亿美元建LCD液晶面板厂
富士康建液晶工厂,富士康科技集团发言人证实,富士康科技集团将于今年6月28日耗资100亿美元的LCD面板厂举行动工仪式. 富士康周四表示,他已经了解到,仪式将于今年6月28日举行,包括美国总统特朗普总 ...
- IncepText算法笔记
源头:场景文本经常受到aspect ratio, scal, and orientation的影响 为了解决这个问题,提出了inceptext,主要贡献在于添加了inception-text modu ...
- Activity(工作流-1)
1.activity自带数据表的含义(23张表) (1)资源库流程规则表 1)act_re_deployment 部署信息表 2)act_re_model 流程设计模型部署表 3)act_re_pr ...
- Raspbian 在虚拟机上运行,运行Flask,供宿主机访问
Raspbian 在虚拟机上运行,启动Flask,供宿主机访问 参考ref 1, 在virtualbox上跑起来Raspbian OS 参考ref 2, 在Raspbian上安装并运行Falsk, 注 ...
- 【RabbitMQ】使用RabbitMQ实现延迟任务
场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 上述类似的需求是我们经常会遇见的问题. ...
- ldd3 编写scull尝试
快速参考: #include <linux/types.h> dev_t dev_t is the type used to represent device numbers within ...
- 攻防世界 WEB篇
0x01 ics-06 查看源码发现:index.php 一开始直接用sqlmap跑了下没有发现注入,然后用brupsuite爆破参数 0x02 NewsCenter SQL注入中的POST注入,查阅 ...
- cordova打包apk流程
一.打包 条件: 1.java-jdk 2.Android-sdk ( 安装教程:https://blog.csdn.net/qq_36577136/article/details/80632674 ...
- 华为交换机telnet配置
1.在路由器上和交换机相连的借口上配置一个IP地址:比如192.168.1.1 24 2.在交换机上配置如下:<switch>system-view[switch]vlan 10[swit ...
- 5 August
P1016 旅行家的预算 单调队列. 再看看单调队列怎么用的. #include <cstdio> int n, l, r; double D, dd, d[9], C, p[9], an ...