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(二)中对于结果页面我还是采用ConventionPlugin的约定,但是这一节我需要利用@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; } }
效果图:
相关文章推荐
- Struts2教程____Struts2入门小Demo配置前告知(默认无法使用*.do请求地址)
- VS2010/MFC编程入门教程之目录和总结
- socket 编程入门教程(一)TCP server 端:2、socket与文件描述符
- Struts2 入门3:Ognl表达式语言与struts标签
- XHTML入门学习教程:框架标签使用
- Struts2教程1:第一个Struts2程序 ----很不错的入门文章
- PHP面向对象(OOP)编程入门教程
- 免费编程入门教程资源推荐搜集,分享给想开始学习程序开发的同学--转自异次元空间
- Unix/Linux环境C编程入门教程(28) 日期时间那些事儿
- Unix/Linux环境C编程入门教程(3) Oracle Linux 环境搭建
- Unix/Linux环境C编程入门教程(33) 命令和鼠标管理用户和组
- 【PHP面向对象(OOP)编程入门教程】4.如何抽象出一个类?
- pl/sql 编程入门经典教程之触发器篇
- struts2官方 中文教程 系列十:Form标签
- socket 编程入门教程(一)TCP server 端:4、构造函数涉及的概念
- 【PHP面向对象(OOP)编程入门教程】15.static和const关键字的使用(self::)
- IOS编程教程:storyboard创建标签栏和网页视图
- canvas学习笔记(上篇)-- canvas入门教程 -- canvas标签/方块/描边/路径/圆形/曲线
- socket 编程入门教程(一)TCP server 端:7、接收与发送
- Java的Socket网络编程基础知识入门教程