Struts2实际上为我们封装了servlet,简化了jsp跳转的复杂操作,提供了易于编写的标签,可以快速开发视图层的代码。下面这篇文章主要给想学习Struts2的白人介绍一些关于Struts2入门的基本信息。有需要的朋友可以参考一下。
Struts2 概述:
Struts2是一个用于开发MVC应用程序的框架。为Web应用开发过程中的一些常见问题提供了解决方案,如用户输入信息的合法性验证、统一布局、国际化等。既然有Struts2,就一定有Struts1,但本质上Struts2并不是由Struts1扩展而来,应该说是换了个品牌名的网络作品更合适。
struts1 VS struts2
Struts1使用ActionServlet作为控制器,Struts2使用filter作为控制器。
Struts1中的每个HTML表单对应一个ActionForm实例,Struts2中的HTML表单将直接映射到一个POJO。
Struts1的验证逻辑是用ActionForm写的,Struts2的验证逻辑是用Action写的。
Struts1中的Action类必须继承org . Apache . struts . Action . Action类,Struts2中的任何POJO都可以是Action类。
Struts2使用OGNL来显示页面中的各种对象模型,所以EL和JSTL不能再用了。
Struts2 环境搭建
创建一个新模型,检查Struts2,然后选择Struts2要使用的库。可以直接在新页面选择下载来下载,也可以提前下载Struts2需要的jar包,自己构建(这里我选择自己构建的库)。
在http://struts.apache.org/download.cgi#struts2516,的这个页面上,您可以选择想要使用的Struts2版本,也可以从我们这里下载:https://www.jb51.net/softs/539810.html.
点击Next为你的struts2项目命名(命名时,建议在第二列内容根的路径后进行重命名。如果第一列中的更改只更改了第一列,其余两列将不会更改)
单击Finish完成Struts2项目的创建。创建的项目如下
IDEA VS Eclipse
如果使用Eclipse创建struts2项目,需要在下载的Struts2包中复制Struts2文件的格式和已有项目中web.xml文件的配置;IDEA会自动为我们构建它。
web.xml文件位于struts2包下的struts \ apps \ struts 2-blank 1 \ we b-INF \ web . XML中。
struts.xml文件在struts2包下的struts \ apps \ struts 2-blank \ we b-INF \ classes中,创建在src目录下。
Struts2 HelloWorld
设置好Struts2的开发环境后,我们开始编写第一个Struts2程序,要求在一个表单中输入用户的基本信息,然后点击提交跳转到另一个页面显示用户输入的信息。在学习Struts2之前,这对我们来说非常简单,我们只需要向塞尔韦特发送页面请求,以响应另一个页面的请求,然后使用EL和JSTL显示信息。当然,这是Struts2的一个HelloWorld,我们将以这个例子来解释Struts2的各个方面。
在index.jsp编写页面代码,供用户输入基本信息,如下所示:
根据表单的name属性编写实体类,创建getXxx和setXxx方法,Customer.java。
在struts.xml文件中编写代码来处理struts2请求。
返回show.jsp页面
struts.xml
?xml版本='1.0 '编码='UTF-8 '?
!DOCTYPE struts公共
-//Apache软件基础//DTD Struts配置2.3//EN '
' http://struts . Apache . org/dtds/struts-2.3 . dtd '
支杆
包名='helloWorld '扩展='struts-default '
action name=' input ' class=' com . struts 2 . hello . test . customer ' method=' print '
结果名称='print'/show.jsp/result
/操作
/包
/struts
Customer.java
包com . struts 2 . hello . test;
/**
*由shkstart于2018/03/24创建。
*/
公共类客户{
私有字符串用户名;
私人字符串电子邮件;
私有字符串地址;
/*
* getXxx() setXxx()方法
**/
公共字符串print() {
system . out . println(new Customer());
返回“打印”;
}
@覆盖
公共字符串toString() {
返回“客户{”
用户名=' '用户名' \ ' '
,email='' email '\ ' '
,address='' address '\ ' '
'}';
}
}
index.jsp
%@页content type=' text/html;' charset=UTF-8 '语言='java' %
超文本标记语言
头
标题输入/标题
/头
身体
桌子
表单操作='input.action '方法='post '
tr
td用户名/td
TD input type=' text ' name=' userName '/TD
/tr
tr
td电子邮件/td
TD input type=' text ' name=' email '/TD
/tr
tr
td地址/td
TD input type=' text ' name=' address '/TD
/tr
tr
td输入类型='提交'值='提交'/td
/tr
/表单
/表格
/body
/html
Show.jsp(仅显示正文标签内容)
用户名:${userName}br
电子邮件:${email}br
地址:${address}br
代码的详细解释
Customer.java的成员变量与index.jsp的属性一一对应,不区分大小写;
show.jsp用于显示的成员变量与Customer.java一致,否则无法显示。
index.jsp中的表单操作值应设置为struts.xml文件中操作的name属性。
struts.xml文件中动作节点的方法属性应该是Custome.java中的字符串print()方法,结果节点的名称属性是
String print()方法的返回值
result节点的值是处理struts2请求后响应的页面。
对于show.jsp页面的显示,我们会在后面详细讲解相关知识。到目前为止,我们的struts 2 hello world已经在这里了,我相信小白和我一样,如果他遵循它,就不会犯任何大错误!
struts.xml 文件节点
包属性——struts 2使用包来组织模块。
name属性是必需的,用于其他包以应用当前包;
Extends表示当前包继承的包,即可以继承所有的配置,通常是struts-default;
命名空间的默认值是/。设置此属性时,应在URL中的servletPath之前添加set值。
属性struts2请求是一个动作。
“结果”(活动的子标签)标签正文指明了回应结果。
该名称对应于struts2请求的名称,没有扩展名(扩展名默认为。行动);
class请求此struts2要转到的类的完整类名;
方法是这个类要执行的方法,这个方法的返回值必须是String,必须和结果节点的name属性一致。
result的name属性的默认值为SUCCESS,class的默认属性为ActionSupport,method的默认值为execute。
一个操作可以有多个结果子节点,这些子节点通过name属性来区分。
结果节点的type属性默认为dispatcher,表示结果的响应类型。
Action VS action
本例中,Customer.java是struts2中提到的动作类,index.jsp发出的请求是动作请求;
Action表示一个struts2请求,Action类表示可以处理struts2请求的类。
Action类的成员变量必须遵循与JavaBean属性名相同的命名规则,属性的类型可以是任意类型,必须与表单的name属性相同。
当struts2执行这个动作请求时,至少要调用一个方法。
同一个动作也可以包含多个动作方法。
Action类必须有一个无参数的构造函数,因为将使用反射赋值。
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。