SSH框架学习之Struts2(2):接收参数

来源:互联网 发布:小企业免费记账软件 编辑:程序博客网 时间:2024/06/01 22:22

参考视频:尚学堂

具体视图的返回

可以由用户自己定义的Action来决定

具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容

具体Action的实现可以是一个普通的java类,里面有public String execute方法即可

public class IndexAction1 {    public String execute() {        return "success";    }}

或者实现Action接口

public class IndexAction2 implements Action {    @Override    public String execute() {        return "success";    }}

不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法

public class IndexAction3 extends ActionSupport {    @Override    public String execute() {        return "success";    }}
  <action name="index" class="com.bjsxt.struts2.front.action.IndexAction1">

在struts2中,这段action会访问IndexAction1类中的返回值为String类型的execute方法。当没有配置class时候,会执行默认的class,即ActionSupport.class,源码在xwork中,可以自己加载出来。

更改jsp编码方式

Window – Preference – 搜索jsp – encoding – Chinese – jsp页面encoding = GB18030可以直接在里面写中文

struts1和2的一个重要区别:

struts1里面action只有一个,会出现线程同步的问题;
struts2里面每次访问action都会创建一个新的,所以不会有这个问题。

路径问题的说明

struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

虽然可以用redirect方式解决,但redirect方式并非必要。


解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)


或者使用myeclipse经常用的,指定basePath

<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>  <base href="<%=basePath%>">

DMI动态方法调用

Action执行的时候并不一定要执行execute方法

public class UserAction extends ActionSupport {    public String add() {        return SUCCESS;    }}

可以在配置文件中配置Action的时候用method=来指定执行哪个方法

<action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">

也可以在url地址中动态指定(动态方法调用DMI)(推荐)

  <action name="user" class="com.bjsxt.struts2.user.action.UserAction">

前者会产生太多的action,所以不推荐使用

通配符配置

使用通配符,将配置量降到最低

不过,一定要遵守”约定优于配置”的原则

用action的属性接收参数

重要的是set/get方法中的名字和传递参数的语句的属性的名字对应上

public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }
<a href="user/user!add?name=a&age=8">

用DomainModel接收参数

域模型:真正存在的实体概念
简单理解就是把属性封装成一个对象,再使用对象。

用modelDriven接收参数

实现了modelDriven接口:模型驱动
model得自己new,不会自动new了

JUDE(Java and UML Developers’ Environment),一个小巧实用的UML建模软件,不到2M,绝对可以符合UML建模的要求

阅读全文
0 0