Web框架技术开发初级实验指导书10级(2)

2018-12-29 21:27

Struts的namespace

示例工程Struts2_0200_Namespace Struts.xml

/Namespace.jsp

/Namespace.jsp

所以namespace为空意味着:只要找到一个index.action,没有找到精确的对应的namespace,全部都交给namespace为空的这个package去处理,所以这个package囊括了其他所有package处理不了的action。

Struts自定义具体视图的返回

示例工程Struts2_0300_Action

修改jsp模板字符编码:windows-preferences- JSP 修改编码为UTF-8即可

IndexAction1.java

public class IndexAction1 { }

public String execute() { }

return \;

- 6 -

IndexAction2.java

public class IndexAction2 implements Action { }

真正企业开发只用这第三种!另外两种忘记! IndexAction3.java

public class IndexAction3 extends ActionSupport { }

class=\>

/ActionIntroduction.jsp

public String execute() { }

return \; public String execute() { }

return \;

具体视图的返回可以由用户自己定义的Action来决定

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

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

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

如果不配置class属性,默认执行xwork框架的ActionSupport这个action,这个action就有execute这个方法,return success。

- 7 -

Struts路径问题

示例工程:Struts2_0400_Path

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

虽然可以用redirect方式解决,但redirect方式并非必要。 解决办法非常简单,统一使用绝对路径。

(在jsp中用request.getContextRoot方式来拿到webapp的路径) 或者使用myeclipse经常用的,指定basePath

先点击链接http://localhost:8080/Struts2_0400_Path/path/path.action 跳转到path.jsp 页面 在path.jsp页面上有链接

如果改成

<%

String path = request.getContextPath(); String basePath =

request.getScheme()+\+request.getServerName()+\+request.getServerPort()+path+\;%>

\/>

request.getContextPath()会拿到webapplication的名称:Struts2_0400_Path request.getScheme()拿到“http”字符串 request.getServerName()拿到“localhost” request.getServerPort()拿到“8080”

- 8 -

动态方法调用

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

可以在配置文件中配置Action的时候用method=来指定执行哪个方法 也可以在url地址中动态指定(动态方法调用DMI)(推荐)

/user/userAdd\>添加用户 /user/user!add\>添加用户

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

/user_add_success.jsp

/user_add_success.jsp

- 9 -

实验二:Action接收参数的方式

Action有三种接收参数的方式 1. 属性接收参数

2. 用DomainModel(实体模型)接收参数 3. 用ModelDriven接收参数( 不常用 )

用Action的属性接收参数

Struts2_0700_ActionAttrParamInput Index.jsp

\/>

使用action属性接收参数添加用户

链接的意思是:执行user下面的user.action下面的add方法

怎么接受参数的呢?第一种方式.在自己的action下面定义两个属性,写好get,set方法,当new 完action的时候,会自动把这两个属性从参数里面拿过来,帮你设置好。

参数跟我们的成员变量一一对应,这时候它就会自动把我们的参数传递到我们成员变量里。这时候当我们调用add()方法时,它直接可以用了。 UserAction.java public class UserAction extends ActionSupport { }

Struts.xml

private String name; private int age; public String add() { }

public String getName() { }

public void setName(String name) { }

public int getAge() { }

public void setAge(int age) { }

this.age = age; return age; this.name = name; return name;

System.out.println(\ + name); System.out.println(\ + age); return SUCCESS;

- 10 -


Web框架技术开发初级实验指导书10级(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:网上阅卷注意事项

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: