Struts2入门问题

一 使用Struts 2 开发程序的基本步骤
加载Struts2 类库
配置web.xml文件
开发视图层页面
开发控制层Action
配置struts.xml文件

部署、运行项目

第一步先导架包:在web-inf/lib:

struts2-core-xxx.jar

Struts 2框架的核心类库

xwork-core-xxx.jar

XWork类库,Struts 2的构建基础

ognl-xxx.jar

Struts 2使用的一种表达式语言类库

freemarker-xxx.jar

Struts 2的标签模板使用类库

javassist-xxx.GA.jar

对字节码进行处理,代码生成工具

commons-fileupload-xxx.jar

文件上传时需要使用

commons-io-xxx.jar

Java IO扩展

commons-lang-xxx.jar

包含了一些数据类型的工具类java.lang

第二步配置web.xml文件:

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>

将将全部请求定位到指定的Struts 2过滤器中

第三步配置jsp页面:

<div>
		<h1>
			<!--显示Struts Action中message的属性内容-->
			<s:property value="message"/>
		</h1>
	</div>
	<div>
		<form action="helloWorld.action" method="post">
			请输入您的姓名:
			<input name="name" type="text" />
			<input type="submit" value="提交" />
		</form>
	</div>

第四步写Action:

public class HelloWorldAction implements Action {
	// 用户输入的姓名
	private String name = "";
	// 向用户显示的信息
	private String message = "";
	public String execute() {
		// 根据用户输入的姓名,进行"Hello,XXXX!"的封装
		this.setMessage("Hello,"+this.getName()+"!");
		// 处理完毕,返回导航结果的逻辑名
		return "success";
	}
	…	//省略setter、getter方法
}

第五步:关键一步:

配置Struts 2配置文件(struts.xml)

<?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>
	<package name="default" namespace="/" extends="struts-default">
		<action name="helloWorld" 
					class="cn.jbit.strutsdemo.HelloWorldAction">	
			<result name="success">helloWorld.jsp</result>
		</action>
	</package>
</struts>

可以启动服务器,发布项目。

思考?如何在登录成功页面保存用户信息?

Struts 2访问Servlet API的方式
与Servlet API解耦的访问方式(建议)
与Servlet API耦合的访问方式

1.解耦方式:

public class LoginAction implements Action {
	private static final String CURRENT_USER = "CURRENT_USER";	
	… //省略username、password属性及其setter和getter方法
	public String execute() {
		if("jbit".equals(username) && "bdqn".equals(password)) {
			Map<String,Object> session = null;
			session = ActionContext.getContext().getSession();
			if(session.containsKey(CURRENT_USER)) {				
				session.remove(CURRENT_USER);
			}
			session.put(CURRENT_USER, username);
			return "success";
		} else {
			return "error";
		}
	}
}
2.耦合方式:

public class LoginAction implements Action {
	private static final String CURRENT_USER = "CURRENT_USER";	
	… //省略username、password属性及其setter和getter方法
	public String execute() {			
		if("jbit".equals(username) && "bdqn".equals(password)) {	
			HttpSession session = null;
			session = ServletActionContext.getRequest().getSession(); 			
                       if(session.getAttribute(CURRENT_USER) != null) {
				session.removeAttribute(CURRENT_USER);
			}
			session.setAttribute(CURRENT_USER, username);	
			return "success";
		} else {			
			return “error";
		}
	}
}




页面取值可以用EL表达式

Struts 2的提供了数据验证机制继承ActionSupport类来完成Action开发ActionSupport类不仅对Action接口进行简单实现,同时增加了验证、本地化等支持 
public class LoginAction extends ActionSupport{
//......省略代码
public void validate() {	
if(this.getUsername().length()==0){
	addFieldError("name","用户名不能为空");
}
if(this.getPassword().length()==0){
	addFieldError("pwd", "密码不能为空");
}
}	
//......省略代码
}
可使用Struts2标签将错误消息展示在页面:
<%@ taglib prefix="s" uri="/struts-tags"%>

<s:form>…</s:form>

表单标签

<s:textfield>…</s: textfield >

文本输入框

<s:password>…</s: password >

密码输入框

<s:textarea>…</s: textarea >

文本域输入框

<s:radio>…</s: radio >

单选按钮

<s:checkbox>…</s: checkbox >

多选框

<s:submit />

提交标签

<s:reset />

重置标签

<s:hidden />

隐藏域标签



<s:fielderror/>可以将显示服务器返回的错误信息。
常用通用标签:

条件标签

<s:if>……</s:if>

根据表达式的值,

判断将要执行的内容

<s:elseif>……</s:elseif>

<s:else>……</s:else>

迭代

<s:iterator>……</s: iterator >

用于遍历集合



<s:if test="表达式">
    需要执行的代码
</s:if>
<s:elseif test="表达式">
  需要执行的代码
</s:elseif>
<s:else>
    需要执行的代码
</s:else>
2.迭代
<s:iterator value="集合对象" status="status" id="name">
    读取集合对象并输出显示
</s:iterator>
value属性:需要进行遍历的集合对象
status属性:表示当前迭代对象的一个实例
id属性:当前迭代元素的id,可直接访问元素,该参数可选

Action的实现方式
实现Action接口
继承Action接口实现类ActionSupport类
Struts 2中提供了解耦和耦合两种方式实现对Servlet API的访问
ActionSupport类提供了对数据验证的支持
validate()方法
Struts 2提供强大的标签支持
表单标签
通用标签
















原文地址:https://www.cnblogs.com/jatpeo/p/11767559.html