Java_WEB开发_struts2学习的总结

一、构建struts2的基本包有:

commons-fileupload-...jar

commons-logging.jar

freemarker.jar

ognl-2.7.3.jar

struts2-config-browser-plugin.jar

struts2-core-2.1.8.1.jar

xwork-core-2.1.6.jar

二、构建Struts2.X应用:

1.导入commons-logging.jar,freemarker.jarognl.jarstruts2-core.jarxwork.jar这些struts2的基本包

2.修改WEB-INF下的web.xml文件,添加

<!-- 定义Struts 2的FilterDispatcher的Filter --> <filter> <!-- 定义核心Filter的名字 --> <filter-name> struts2 </filter-name> <!-- 定义核心Filter的实现类 --> <filter-class> org.apache.Struts2.dispatcher.FilterDispatcher </filter-class> </filter> <!-- FilterDispatcher用来初始化Struts 2并且处理所有的Web请求 --> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

3.src根目录下建立struts.xml文件,内容:

<?xml version="1.0" encoding="GBK"?> <!-- 指定Struts 2配置文件的DTD信息 --> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <!-- struts是Struts 2配置文件的根元素 --> <struts> <!-- Struts 2的Action必须放在指定的包空间下定义 --> <package name="strutsqs" extends="struts-default"> <!--定义login的Action,该Action的实现类为lee.Action类 --> <action name="Login" class="struts2.action.LoginAction"> <!--定义处理结果和资源之间映射关系。 --> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> </package> </struts>

4.添加控制器类,实现接口:com.opensymphony.xwork2.Action,重写方法:publicStringexecute()throwsException{},例如:

package struts2.action; import struts2.biz.BookService; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; public class GetBooksAction implements Action { private String[] books; public String[] getBooks() { return books; } public void setBooks(String[] books) { this.books = books; } public String execute() throws Exception { // TODO Auto-generated method stub String name = (String)ActionContext.getContext().getSession().get("user"); if(null != name && "123".equals(name)){ setBooks(BookService.getBooks()); return SUCCESS; }else{ return LOGIN; } } }

5.如需对表单或其他提交信息验证,在对应的Action的同级目录添加ActionName-validation.xml文件,ActionName替换成你的Action的名字,如GetBooksAction的验证文件为GetBooksAction-validation.xml内容比如:

<?xml version="1.0" encoding="GBK"?> <!-- 指定校验规则文件的DTD信息 --> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <!-- 校验规则定义文件的根元素 --> <validators> <!-- 校验第一个表单域:username --> <field name="name"> <!-- 该表单域必须填写 --> <field-validator type="requiredstring"> <!-- 如果校验失败,显示user.required对应的信息 --> <message key="user.required" /> </field-validator> </field> <!-- 校验第二个表单域:password --> <field name="password"> <field-validator type="requiredstring"> <!-- 如果校验失败,显示pass.required对应的信息 --> <message key="密码校验失败" /> </field-validator> </field> </validators>

6.页面UI显示标签如:

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>登录页面</title> </head> <body> <!-- 使用form标签生成表单元素 --> <s:form action="Login"> <!-- 生成一个用户名文本输入框 --> <s:textfield name="username" label="用户名"/> <!-- 生成一个密码文本输入框 --> <s:textfield name="password" label="密 码"/> <!-- 生成一个提交按钮 --> <s:submit value="登录"/> </s:form> </body> </html>

加入<%@taglibprefix="s"uri="/struts-tags"%>引用

Struts2为常用表单域都提供了对应的标签,下面是常用的表单域标签。

form:对应一个表单元素。

checkbox:对应一个复选框元素。

password:对应一个密码输入框。

radio:对应一个单选框元素。

reset:对应一个重设按钮。

select:对应一个下拉列表框。

submit:对应一个提交按钮。

textarea:对应一个多行文本域。

textfield:对应一个单行文本框。

7.页面取值,正如GetBooksAction中的逻辑,将要返回的数据放入到Action的属性中即可,在页面取值的方法:

a)request的“struts.valueStack”属性中取得如:

<table border="1" width="360"> <caption>作者李刚的图书</caption> <% //获取封装输出信息的ValueStack对象 ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack"); //调用ValueStack的fineValue方法获取Action中的books属性值 String[] books = (String[])vs.findValue("books"); //迭代输出全部图书信息 for (String book : books) { %> <tr> <td>书名:</td> <td><%=book%></td> </tr> <%}%> </table>

b)在页面中直接用EL表达式取值:

${books["0"]}

c)struts2标签:

<table border="1" width="360"> <caption>作者李刚的图书</caption> <!-- 迭代输出ValueStack中的books对象,其中status是迭代的序号 --> <s:iterator value="books" status="index"> <!-- 判断序号是否为奇数 --> <s:if test="#index.odd == true"> <tr style="background-color:#cccccc" mce_style="background-color:#cccccc"> </s:if> <!-- 判断迭代元素的序号是否不为偶数 --> <s:else> <tr> </s:else> <td>书名:</td> <td> <s:property/> </td> </tr> </s:iterator> </table>

8.国际化:

a)在根目录下建立:basename_语言代码_国家代码.properties文件,如:

messageResouce_zh_CN.properties,在其中建立数据:

loginPage=登录页面

errorPage=错误页面

succPage=成功页面

failTip=对不起,您不能登录!

succTip=欢迎,${0},您已经登录!

viewLink=查看作者李刚已出版的图书

bookPageTitle=作者李刚已出版的图书

bookName=书名:

user=用户名

pass=密码

login=登录

对应的英文版的文件:messageResouce_en_US.properties

loginPage=LoginPage

errorPage=ErrorPage

succPage=WelcomePage

failTip=Sorry,Youcan'tlogin!

succTip=welcome,{0},youhasloggedin!

viewLink=ViewLiGang/'sBooks

bookPageTitle=LiGang/'sBooks

bookName=BookName:

user=UserName

pass=UserPass

login=Login

b)在根目录下建立文件:struts.properties加载资源文件可以通过来定义,本应用的struts.properties文件仅有如下一行代码:

//定义Struts2的资源文件的name

struts.custom.i18n.resources=messageResouce_zh_CN

c)如果将该资源文件保存在src的子目录下,例如保存在src/lee路径下,则需要修改struts.properties中的定义如下:

//定义Struts2的资源文件的namemessageResource,且文件放在src/lee路径下

struts.custom.i18n.resources=lee.messageResource

d)输出国际化信息:

<s:textname="bookPageTitle"/>:使用s:text标签来输出国际化信息

<!--EndFragment-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值