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

struts2入门教程六(struts2标签及约定编程)

2014-03-11 21:34 323 查看

Struts2标签

通用标签

通用标签是用于控制执行流,当页面呈现。这些标签也允许数据提取的地方比你的行动或其他价值堆栈,如本地化,javabean,包括额外的url或其他的action。

控制标签提供控制流,例如,if,和迭代器。

数据标签允许数据操作或创建,bean,push,i18n。

 


  这里有各个标签使用的详细案例非常好,所有的测试类及界面写额的较为详细

http://www.roseindia.net/struts/struts/struts2.2.1/tags/index.html 

UI 标签

与通用的标记、UI标记不提供控制结构或逻辑。相反,他们关注使用数据,从你的行动/值栈或从数据标签,在丰富的可重用的HTML和显示数据。所有UI标记是由模板和主题。虽然通用标签仅仅输出一些内容直接从标记(如果有任何内容输出),UI标记听从一个模板,通常组合在一起作为一个主题,做实际的呈现。

模板支持允许HTML UI标记构建一组丰富的可重用的组件,可以定制,以适应具体的要求。,主题和模板。

 


 

 此页面也有详细介绍大家可以参考

http://www.roseindia.net/struts/struts/struts2.2.1/tags/index.html

 

struts2零配置

1.零配置并不是没有配置,而是通过约定大于配置的方式,大量通过约定来调度页面的跳转而使得配置大大减少。

2.约定优于配置

3.安装Convention插件,复制struts2-convention-plugin-2.3.16.jar

 

 

convention-plugin的约定

1. 默认所有的结果页面都存储在WEB-INF/content下,可以通过设置struts.convention.result.path改变到其他路径。

<constantname="struts.convention.result.path" value="/WEB-INF/page"/>

2. 默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。

<constantname="struts.convention.package.locators"value="web,action" />

3. 接着,Convention从前一步找到的package以及其子package中寻找com.opensymphony.xwork2.Action 的实现以及以Action结尾的类:

4. 命名空间。从定义的.package.locators标示开始到包结束的部分,就是命名空间。Com.csdn.net.user.userAction的命名空间是:”/user”。Com.csdn.net.user.detail.UserAction的命名空间是:”/user/detail”

 

5. Convention通过如下规则确定URL的具体资源部分:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用’-’分割

<constantname="struts.convention.action.name.separator" value="-"/> 

Com.csdn.net.detail.UserDetailAction,映射的url就是/WEB-INF/content/user/detail/user-detail.jsp

6. struts支持.jsp .html .htm .vm格式的文件。

7.返回success  页面为login.jsp /  login-success.jsp / login.html /  login-success.html

 

 

以下案例命名规范示例图



 


     案例一: helloworld

Java 代码必须按照规定命名补不得改动

package action;

import com.opensymphony.xwork2.ActionSupport;

public classHelloWorld extendsActionSupport {

/**
*
*/
private static final long serialVersionUID= 1L;
private String message;

public String getMessage() {
return message;
}

public void setMessage(Stringmessage) {
this.message = message;
}

@Override
public String execute() throws Exception {
message="HEllOwrold";

return SUCCESS;
}

}


 

Jsp页面 hello-world.jsp

 仅为测试用

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP'hello-worldp.jsp' starting page</title>

</head>

<body>${message }
</body>
</html>


 效果图

访问  :  http://localhost:8080/convention/hello-world


 

案例二Action链的约定

 

第一个Action返回的逻辑视图字符串没有对应的视图

第二个Action与第一个Action处于同一个包下

第二个Action的URL为:firstActionName+resultcode
http://localhost:8080/convention/first
 

java代码—first.java

 

package action;

import com.opensymphony.xwork2.ActionSupport;

public classFirst extendsActionSupport {

/**
*
*/
private static final long serialVersionUID= 1L;

@Override
public String execute() throws Exception {

return "second";
}

}


Java 代码—FirstSecond

package action;

import com.opensymphony.xwork2.ActionSupport;

public classFirstSecond extends ActionSupport {

@Override
public String execute() throws Exception {

return SUCCESS;
}

}


jsp页面--- first-second-success.jsp

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP'first-second-success.jsp' starting page</title>
</head>

<body>
来了 This is my JSP page.
<br>
</body>
</html>


 

效果图



案例三:Convention插件相关annotation 通过注释

java代码:--HelloAction

package action;

importorg.apache.struts2.convention.annotation.Action;
importcom.opensymphony.xwork2.ActionSupport;

public class HelloAction extendsActionSupport {

/**
*
*/
privatestatic final long serialVersionUID = 1L;
privateString message;

publicString getMessage() {
return message;
}

publicvoid setMessage(String message) {
this.message= message;
}

@Override
publicString execute() throws Exception {
message="HEllOwrold";

return SUCCESS;
}
@Action("action1")
publicString method1(){
return SUCCESS;
}

@Action("/user/action2")
publicString method2(){
return SUCCESS;
}

}


 

Struts.xml--打开动态调用

<?xml version="1.0"encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation"value="true"/>

</struts>


jsp页面—hello.jsp

仅为测试

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'hello.jsp' starting page</title>
</head>
<body>
This is my hello.JSP page. <br>
</body>
</html>


效果图





案例四---
Struts2注解配置之@Results和@Result

在Struts2注解配置之@Action(二)中对于结果页面我还是采用Convention
Plugin的约定,但是这一节我需要利用@Results和@Result改变一下这种约定。以及@Results和@Result对类和方法进行注解后所产生的效果。

Java 代码:

 

package action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.ActionSupport;

@Results({ @Result(name = "error", location = "/WEB-INF/error.jsp") })
public class HelloAction extends ActionSupport {

/**
*
*/
private static final long serialVersionUID = 1L;
private String message;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

@Override
public String execute() throws Exception {
message = "HEllOwrold";

return SUCCESS;
}

@Action("action1")
public String method1() {
return ERROR;
}

@Action("/user/action2")
public String method2() {
return SUCCESS;
}

}


效果图:

 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息