16_Struts2.x概述
2013-01-15 13:38
288 查看
16.1 Struts 2.x 简介
16.1.1 Struts 2简介
起源于webwork
16.1.2 Struts2与WebWork2的关系
struts2就是webwork2
16.2 第一个Struts2实例
16.2.1 下载Struts2类库
16.2.2 登录功能Action
LoginAction.java
16.2.3 Struts2配置文件
位于src下的struts.xml
16.2.4 JSP登录页面
success.jsp
struts2支持主题,上例使用ajax主题,会自动加载struts2中的dojo库
login.jsp
16.2.5 配置web.xml
16.2.6 更改.action后缀
在web.xml中<filter>中添加
更改action部分即可
16.3 Struts2工作流程
16.3.1 Struts2工作流程
16.3.2 Struts2的线程安全
Struts1的Action是线程不安全的,因为只有一个实例,
Struts2的Action是线程安全的,因为有多个实例,而且不会浪费资源。
16.3.3 程序入口FilterDispatcher
16.4 Struts2配置文件
16.4.1 struts.properties
在struts2-core-2.3.8.jar中的org.apache.struts2下有default.properties,也就是默认的配置文件
16.4.2 struts.xml
核心的配置文件,而且struts.properties可以配置在struts.xml中
其中,
<constant>配置struts2的属性,等同于struts.properties
<include>配置多个struts2配置文件
16.4.3 配置package
<package>类似于对象,可以继承
16.4.4 配置命名空间
<package>还可以配置namespace属性。如果配置了namespace="namespace1",那么访问时需要加上namespace。例如namespace1/person.action
16.5 Action详解
16.5.1 ActionSupport类
一般Action继承这个类,实现了很多方法。
16.5.2 Action接口
Action接口中只实现了execute()方法
16.5.3 不继承任何类的Action
可以不实现Action接口,只要有public String execute()方法就可以了
16.5.4 Action的可执行方法
只要方法没有参数,并且返回String就是可执行方法,
可以这样调用login!login.action,login!logout.action
16.5.5 通过URL执行Action的方法
通过action!method.action的方式访问
16.5.6 将执行方法配置到Action
struts.xml中
每个method配置一个action,要添加method属性
通过通配符实现这种效果
16.6 Struts2的零配置
16.6.1 通过@注解实现Action零配置
需要添加struts2-convention-plugin-2.3.8.jar这个包
AnnotatedAction.java
16.6.2 web.xml中指定Action目录
需要在web.xml中添加如下内容,指定注解的Action
web.xml
16.6.3 零配置的Action的访问方式
目前只能以action!method.action的形式访问
16.7 Action中使用POJO
16.7.1 图书管理Action
BookAction.java
16.7.2 图书实体Book类
Book.java
16.7.3 通配符配置Action
struts.xml
16.7.4 JSP添加,列表页面
initAddBook.jsp
<s:url>默认还会添加地址栏参数,可以使用以下配置禁用添加
struts.url.includeParams=none
listBook.jsp
16.8 本章小结
16.1.1 Struts 2简介
起源于webwork
16.1.2 Struts2与WebWork2的关系
struts2就是webwork2
16.2 第一个Struts2实例
16.2.1 下载Struts2类库
16.2.2 登录功能Action
LoginAction.java
package com.uikoo9.action; import com.opensymphony.xwork2.Action; public class LoginAction implements Action { private String account; private String password; public String execute() throws Exception { if("hello".equalsIgnoreCase(account) && "1234".equals(password)) return SUCCESS; return LOGIN; } //getters and setters public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
16.2.3 Struts2配置文件
位于src下的struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="main" extends="struts-default"> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="loginPerson" class="com.opensymphony.xwork2.Action。LoginAction"> <result name="success">/welcome.jsp</result> </action> </package> </struts>
16.2.4 JSP登录页面
success.jsp
<%@ page language="java" import="java.util.*" %> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="/struts-tags" prefix="struts" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jsp template</title> <struts:head theme="ajax"/> </head> <body> 登录成功,欢迎你,<struts:property value="account"/> </body> </html>
struts2支持主题,上例使用ajax主题,会自动加载struts2中的dojo库
login.jsp
<%@ page language="java" import="java.util.*"%> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="struts"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jsp template</title> <struts:head theme="ajax" /> </head> <body> <struts:form action="loginPerson"> <struts:label value="登录系统"></struts:label> <struts:textfield name="acount" label="帐号"></struts:textfield> <struts:password name="password" label="密码"></struts:password> <struts:submit value="登录"></struts:submit> </struts:form> </body> </html>
16.2.5 配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Struts2</display-name> <!-- struts2-prepare&execute --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- welcome --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
16.2.6 更改.action后缀
在web.xml中<filter>中添加
<init-param> <param-name>struts.action.extension</param-name> <param-value>action</param-value> </init-param>
更改action部分即可
16.3 Struts2工作流程
16.3.1 Struts2工作流程
16.3.2 Struts2的线程安全
Struts1的Action是线程不安全的,因为只有一个实例,
Struts2的Action是线程安全的,因为有多个实例,而且不会浪费资源。
16.3.3 程序入口FilterDispatcher
16.4 Struts2配置文件
16.4.1 struts.properties
在struts2-core-2.3.8.jar中的org.apache.struts2下有default.properties,也就是默认的配置文件
16.4.2 struts.xml
核心的配置文件,而且struts.properties可以配置在struts.xml中
其中,
<constant>配置struts2的属性,等同于struts.properties
<include>配置多个struts2配置文件
16.4.3 配置package
<package>类似于对象,可以继承
16.4.4 配置命名空间
<package>还可以配置namespace属性。如果配置了namespace="namespace1",那么访问时需要加上namespace。例如namespace1/person.action
16.5 Action详解
16.5.1 ActionSupport类
一般Action继承这个类,实现了很多方法。
16.5.2 Action接口
Action接口中只实现了execute()方法
16.5.3 不继承任何类的Action
可以不实现Action接口,只要有public String execute()方法就可以了
16.5.4 Action的可执行方法
只要方法没有参数,并且返回String就是可执行方法,
可以这样调用login!login.action,login!logout.action
16.5.5 通过URL执行Action的方法
通过action!method.action的方式访问
16.5.6 将执行方法配置到Action
struts.xml中
每个method配置一个action,要添加method属性
通过通配符实现这种效果
<!-- 不使用通配符 --> <action name="loginPerson" class="com.uikoo9.action.LoginAction" method="login"> <result name="success">/welcome.jsp</result> <result name="login">/login.jsp</result> </action> <action name="logoutPerson" class="com.uikoo9.action.LoginAction" method="logout"> <result name="success">/welcome.jsp</result> <result name="logout">/logout.jsp</result> </action> <!-- 使用通配符 --> <action name="*Person" class="com.uikoo9.action.LoginAction" method="{1}"> <result name="success">/welcome.jsp</result> <result name="{1}">/{1}.jsp</result> </action>
16.6 Struts2的零配置
16.6.1 通过@注解实现Action零配置
需要添加struts2-convention-plugin-2.3.8.jar这个包
AnnotatedAction.java
package com.uikoo9.action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.Action; @Namespace(value = "/test") @Results({ @Result(name = "success", location = "/success.jsp"), @Result(name = "login", location = "/login.jsp") }) public class AnnotatedAction implements Action { public String execute() throws Exception { return "login"; } public String add(){ return "success"; } public String login(){ return "login"; } }
16.6.2 web.xml中指定Action目录
需要在web.xml中添加如下内容,指定注解的Action
web.xml
<init-param> <param-name>actionPackages</param-name> <param-value>com.uikoo9.action.</param-value> </init-param>
16.6.3 零配置的Action的访问方式
目前只能以action!method.action的形式访问
16.7 Action中使用POJO
16.7.1 图书管理Action
BookAction.java
package com.uikoo9.action; import java.util.ArrayList; import java.util.List; import com.uikoo9.model.Book; public class BookAction{ public static List<Book> bookList = new ArrayList<Book>(); private String title; private Book book; public String initAdd(){ return "initAdd"; } public String add(){ bookList.add(book); title = "<br/><br/>添加书籍成功<br/><br/>"; return "success"; } public String list(){ return "list"; } public String clear(){ bookList.clear(); title = "<br/><br/>清空书籍列表成功<br/><br/>"; return "list"; } //getters and setters public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Book getBook() { return book; } public void setBook(Book book) { this.book = book; } public static List<Book> getBookList() { return bookList; } }
16.7.2 图书实体Book类
Book.java
package com.uikoo9.model; import java.util.Date; public class Book { private String name; private String author; private Date publishedDate; //getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Date getPublishedDate() { return publishedDate; } public void setPublishedDate(Date publishedDate) { this.publishedDate = publishedDate; } }
16.7.3 通配符配置Action
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="demo2" extends="struts-default"> <action name="*Book" class="com.uikoo9.action.BookAction" method="{1}"> <result>/successBook.j</result> <result name="{1}">/{1}Book.jsp</result> <result name="input">/initAddBook.jsp</result> <result name="list">/listBook.jsp</result> </action> </package> </struts>
16.7.4 JSP添加,列表页面
initAddBook.jsp
<%@ page language="java" import="java.util.*"%> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>initAddBook.jsp</title> </head> <body> <a href='<s:url action="initAddBook"></s:url>'>添加书籍</a> <a href='<s:url action="listBook"></s:url>'>书籍列表</a> <a href='<s:url action="clearBook"></s:url>'>清空书籍列表</a> <s:form action="addBook"> <s:label value="添加书籍"></s:label> <s:textfield name="book.name" label="书名"></s:textfield> <s:textfield name="book.author" label="作者"></s:textfield> <s:textfield name="book.publishedDate" label="出版日期"></s:textfield> <s:submit value="添加"></s:submit> </s:form> </body> </html>
<s:url>默认还会添加地址栏参数,可以使用以下配置禁用添加
struts.url.includeParams=none
listBook.jsp
<%@ page language="java" import="java.util.*"%> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title><s:property value="title" escape="false" /> </title> </head> <body> <table> <tr> <th>书名</th> <th>作者</th> <th>出版日期</th> </tr> <s:iterator id="book" value="bookList"> <tr> <td>${ book.name }</td> <td>${ book.author }</td> <td>${ book.publishedDate }</td> </tr> </s:iterator> </table> </body> </html>
16.8 本章小结
相关文章推荐
- Struts2使用16 -- 值栈与 OGNL 1 -- 概述
- Struts2-部分知识点概述与解释
- Struts2概述及与Struts1的对比
- JavaWeb开发知识总结(五)-(struts2_概述)
- Struts2概述
- Struts2使用11 -- 拦截器1 -- 概述
- Struts2 概述与相关文档
- 3.11.1: Struts2的标签库---Struts2标签库概述
- 3.1 Struts2概述
- 第1章-Struts2 概述 --- Struts2和MVC
- Struts2使用之值栈与OGNL-概述
- Struts2-2 Struts2.0概述与环境搭建
- Struts2学习之struts框架概述
- struts2-16导入导出Excel数据参考
- (16)Struts2_OGNL读取Map栈及其他字段和方法属性
- Struts2学习——(一)基本概念概述
- Struts2_16_默认Action
- Struts2学习1——概述
- 处理结果类型概述——深入Struts2
- Struts2学习笔记16:Struts2的文件上传和下载【续】三