您的位置:首页 > 编程语言 > Java开发

Struts2学习笔记(1)

2017-01-08 10:35 246 查看
Struts2:

1)实现MVC的模式,结构清晰

2)具有丰富的标签(tag)

3)通过配置文件页面导航,便于后期维护

4)与Servlet API松散耦合,便于测试

例:

<package name="hello"(用于子包的继承) namespace="/"(action的根目录) extends="struts-default" (继承,此处为继承默认包)>

<action name="he"(在网页中的action的名称) class="..."(action所对应的类)method=""(该action所对应的方法,若方法为execute,可不写)>

<result name=""(action方法所返回的字符串)>/index.jsp</result>(根据返回字符串选择跳转的页面)

</action></package>

创建Action类:(依情况选择)1)普通Java类:编写public String execute()方法2)实现Action接口,重写execute()方法3)继承ActionSupport类,重写execute()方法(该类中功能较为全面,可能会有冗余)Action:1)控制业务逻辑(如果业务逻辑复杂,可以把业务逻辑构建为业务类)2)返回结果字符串3)方便处理数组Action接受参数:一、Struts2提供了接口用于Action与网页交互,通过将表单的参数名与action的属性名设置相同,并封装SetXXX与GetXXX方法。中文乱码:

<constant name="struts.i18n.encoding" value="utf-8"/>

可以在Struts配置文件中,设置开发模式,使得输出更多日志信息或debug信息(当为false时,为产品模式(proMode)):

<constant name="struts-devMode" value="true"/>

页面显示:

action所传数据:

<%@ taglib prefix="s" uri="struts-tags" %>

<s:property name="" value="" />(显示数据)

上述做法不好之处是:如果实体类的属性非常多,那么Action中也要定义相同的属性。

二、

通过JavaBean方式:

将模型数据从Action中分离出来

1)定义实体类,并为实体类添加属性以及SetXXX与GetXXX方法,名字与页面表单属性名相同

2)为Action添加尸体属性以及SetXXX与GetXXX方法

3)修改表单参数name为实体对象名.属性名

4)取值通过<s:property value="对象名.属性名"/>的形式

这种做法不好的地方是:JSP页面上表单域中的命名变得太长

三、

通过ModelDriven方式,让action类实现一个ModelDriven接口,同时实现接口中的方法:getModel()。

public class DeptAction implements ModelDriven<DeptAction>{

private Dept dept;

@Override

public DeptAction getModel() {

// TODO Auto-generated method stub

return null;

}

public String add(){

return "success";

}

public Dept getDept() {

return dept;

}

public void setDept(Dept dept) {

this.dept = dept;

}

}

Jsp的代码:

<form action="dept.action" method="post">

<input type="hidden" name="method:add"> deptno:<input

type="text" name="deptno"><br /> dname:<input type="text"

name="dname"><br /> loc:<input type="text" name="loc"><br />

<input type="submit" name="submit" value="添加部门">

</form>

相较前两种,action和jsp都较为简单。

相关机制:http://blog.csdn.net/li_tengfei/article/details/6098145

编写struts.xml时无提示,可查看:
http://blog.csdn.net/u012561176/article/details/43878067
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: