第一个Struts2工程(HelloWorld版本)

Struts2简介:(链接至百度百科)
简介
   这里我们主要解释一下Struts1和Struts2的区别。首先,我们要知道Struts2并不是Struts1的升级版,而是基于WebWork的一个“衍生品”。Struts1的缺点恰恰就是Struts2的优点,因为Struts2就是为了解决Struts1所不方便处理的问题而产生的。
   那么,什么是Struts2的优点呢?我总结了下,大体上有一下七点:

  • 1.无需与Servlet API整合,更容易测试(不需要有request ,response)

  • 2.优雅的请求参数封装(不用重复的使用request.getParameter())

  • 3.灵活的视图技术(不仅仅支持jsp)

  • 4.丰富的表达式语言(EL表达式,OGNL)

  • 5.机动,灵活,简单的配置

  • 6.线程的安全控制器(Action)

  • 7.插件


   接下来我们看看Struts2的工作流程,这里引用了网友“name_s_jimmy”的图片
博客地址

第一步:新建工程,然后进行导包


   在Eclipse下进行新建项目,这里需要注意和MyEclipse的区别,勾选添加web.xml的选项,如下图所示。

第二步:对web.xml进行配置


web.xml文件是包含了我们最基础的Struts2的配置内容,在原有的文件中添加如下代码

<filter>
        <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>
复制代码

第三步:新建jsp页面

<br>基础配置完成后,编写两个jsp页面,功能分别是用来登录和显示登录成功。具体就不多赘述了,只需要注意一点,**登录页面form表单的设计**。具体代码如下:
复制代码
<form action = "login.action" method="post">
	<table border="1px">
		<tr>
			<td>登录名:</td>
			<td style="width:200px"><input type="text" name = "uname"></td>
		</tr>
		<tr>
			<td>密码:</td>
			<td style="width:200px"><input type="password" name="pwd"></td>
		</tr>
		<td colspan="2">
		<input type="submit" value="提交"/>
		<input type = "reset"/>
		</td>
	</table>
</form>
复制代码


那么这个form需要注意的就是以下几点:

  • action的命名
    Struts2中的action相当于我们之前接触到的MVC模式中的Servlet的逻辑处理角色,这也是Struts2的特色之一。这里我写的是login.action,同样的,写成login也是合理的,这里只是为了方便阅读。

  • method:提交方式,这里采用post
    Struts2内部采用的是utf-8编码格式,所以使用post会很方便的解决了中文乱码问题,但是如果换成get就会出问题,这里还请大家思考一下。

  • 输入控件的name
    控件的name必须和具体action中的私有变量保持一致,Struts2的优点之一就是参数的封装,这个过程全是由Struts2代替我们完成的,所以我们必须让这两个地方的变量保持一致,让Struts2封装前和解封后的数据可以一一对应。(这里是我自己的理解,如果有错,请海涵,在评论区评论,我会及时更正)

第四步:新建struts.xml文件

这里的文件不推荐更改名称,因为这个xml文件是我们整个Struts2工程的核心,我浅显的理解是这算是将MVC中的请求和转发集成到了一个独立的文件中,方便我们阅读和修改。代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/WebContent/index.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>
		<action name="login" class="com.it.Struts2_Demo.action.User">
			<result name="success" >success.jsp</result>
			<result name="error" type="redirect">index.jsp</result>
		</action>
        
    </package>

</struts>

复制代码

这里,我们注意到,文件中有一个action的name是login,与前台form表单中的action相对应,这里的action就是对form中的数据进行转发。转发至class中的类处理

第四步:编写User类(Action类)

   User类对应MVC模式中servlet的逻辑控制部分,用来处理前台请求的数据,代码如下:

public class User {
	private String uname;
	private String pwd;
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	@Override
	public String toString() {
		return "User [uname=" + uname + ", pwd=" + pwd + "]";
	}
	public String execute() {
		if("tom".equals(uname)&&"123".equals(pwd)) {
			return "success";
		}else {
			return "error";
		}
	}
}

复制代码

最后,我们将工程发布到服务器上,在浏览器中进行测试
附(项目整体图)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值