一 使用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>
将将全部请求定位到指定的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"%>表单标签
文本输入框
密码输入框
文本域输入框
单选按钮
多选框
提交标签
重置标签
隐藏域标签
常用通用标签:
条件标签
**根据表达式的值,
**
判断将要执行的内容
迭代
用于遍历集合
需要执行的代码
需要执行的代码
需要执行的代码
2.迭代
读取集合对象并输出显示
value属性:需要进行遍历的集合对象
status属性:表示当前迭代对象的一个实例
id属性:当前迭代元素的id,可直接访问元素,该参数可选
Action的实现方式
实现Action接口
继承Action接口实现类ActionSupport类
Struts 2中提供了解耦和耦合两种方式实现对Servlet API的访问
ActionSupport类提供了对数据验证的支持
validate()方法
Struts 2提供强大的标签支持
表单标签
通用标签
手机扫一扫
移动阅读更方便
你可能感兴趣的文章