【J2EE】struts 2框架搭建

内容:struts框架的工作原理,如何搭建struts 2框架,以及struts 2框架与页面的传值。


一,框架搭建

1)下载9个所需的jar包 

这里需要注意的就是我给出的包的版本是struts 2.3.20,如果下载的是最新版本的jar包,web.xml配置有些地方需要更改。所以还是下载我给出的这个版本最好。


2)配置web.xml文件

在你的web-app标签里面加入这个,这是一个过滤器。
<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>


3)在你的src文件夹下面添加一个struts.xml的配置文件,需要new一个。下面的图是配置文件对应的图。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
 <constant name="struts.i18n.encoding" value="gb2312"/>
    <package name="action" extends="struts-default">
        <action name="login" class="action.LoginAction" >
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

4)配置文件标签解释,这个博客写的挺好的,不多赘述。具体的配置根据你自己写的action有关,这个只是一个例子。点击打开博客


5)action代码编写,这个class放在名为action的package里面

package action;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class LoginAction extends ActionSupport{
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String execute() throws Exception{
		if("ywf".equals(getUsername())&&"123".equals(getPassword()))
		{
			return SUCCESS;
		}
		else
		{
			return ERROR;
		}
	}
}


二,框架原理(原理可以参考这个博客)点击打开博客

我说一下我的见解,如果有不对的希望大家给出意见一起进步。

我的见解:Servlet容器加载这个项目,肯定先找到这个项目的web.xml文件,由于我们已经配置过了这个web.xml文件,也就是之前的filter,它的意思是拦截所有的请求,交给org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter这个类处理。这里的这个过程可以简单的理解为,设置struts框架拦截请求属性(我记得之前写过servlet过滤器),道理差不多。这时项目在tomcat启动的时候已经加载完毕了。然后就等页面发送请求,struts拦截请求。这时寻找struts的配置文件。
也就是我们添加的struts.xml。那个文件决定了你的action结果返回哪个页面。这个文件起到了之前的servlet的作用,也就是逻辑控制。而具体的函数操作则是由你的action决定。action相当于前面的Dao。这个框架使用起来很麻烦,我也不打算具体去学,简单了解原理。我还是想学SpringMVC。

三,对于web开发很难解决的就是传值问题

1)view--->control的传值

在view页面使用struts框架的标签,像这样。而action接收则用getXXX函数接收,注意要自动生成get和set函数。
<s:form action="login.action" method="post">
    <s:textfield name="username" label="姓名" ></s:textfield>
    <s:password name="password" label="密码" ></s:password>
    <s:submit value="登录"></s:submit>
</s:form>

2)control--->view(标签<s:property value="" />不能获取值,只能获取你前面表单提交的内容)

①struts.xml文件里面对应result的配置,比如下面这样,但是必须保证你的action里面有getError()函数。这种写法应该很好理解。view里面用request.getParameter()取值
<result name="success">/error.jsp?error=${errorcode}</result>
②另一种实现
 <result name="success">
<param name="location">/success.jsp</param>
<param name="errorcode">${errorcode}</param>
</result>
③为了提高代码重用可以使用实体模型传值(具体怎么传值还不是很理解)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值