知识大全 Struts2 框架使用实例分析

Posted

篇首语:勇士搏出惊涛骇流而不沉沦,懦夫在风平浪静也会溺水。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Struts2 框架使用实例分析相关的知识,希望对你有一定的参考价值。

Struts2 框架使用实例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  下面我们通过实例来学习一下Struts 的使用 通过本实例的学习 我们将会对struts 的表单以及表单验证有一个初步的认识 了解struts 的配置以及初探Struts 的本地化输出

   实例说明

  本例是Struts 的简单实例 通过本工程的学习 我们将会对struts 的表单以及表单验证有一个初步的认识 了解struts 的配置以及初探Struts 的本地化输出

   编码准备

   )包的引入

  在MyEclipse或NetBeans中建立web工程 将所需的包放入WebRoot/lib目录中 本实例所需的包有

  mons logging jar

  freemarker jar

  ognl jar

  struts core jar

  xwork jar

  这些包在struts all\\struts \\lib目录下都可以找到 请读者自行下载

   ) web xml的配置

  要使struts能正常工作 需修改web xml的内容 为其增加struts 的FilterDispatcher 修改后的web xml的内容如下

  <?xml version= encoding= UTF ?>

  <web app id= WebApp_ version= xmlns= xmlns:xsi= instance xsi:schemaLocation= app_ _ xsd >

  <display name>Struts Blank</display name>

  <filter>

  <filter name>struts </filter name>

  <filter class> apache struts dispatcher FilterDispatcher</filter class>

  </filter>

  <filter mapping>

  <filter name>struts </filter name>

  <url pattern>/*</url pattern>

  </filter mapping>

  <wele file list>

  <wele file>l</wele file>

  </wele file list>

  </web app>

   )建立源码目录和jsp存放目录

  在src目录下建立example文件夹 用于存放本实例的java文件等 在WebRoot文件夹下建立子文件夹example 用于存放本工程的jsp文件

   编码

   ) Wele jsp和Login jsp的编写

  首先我们建立Wele jsp 该文件包含两个链接 点击 登录 链接后跳转到登录信息输入页面 点击 注册 按钮跳转到注册页 为了学习struts 配置中的通配符使用 我们暂不实现注册功能 Wele jsp的代码如下

  <%@ page contentType= text/; charset=UTF %>

  <%@ taglib prefix= s uri= /struts tags %>

  <>

  <head>

  <title>欢迎界面</title>

  <link <s:urlvalue= /css/examplecss /> rel= stylesheet type= text/css />

  </head>

  <body>

  <h >导航</h >

  <ul>

  <li><a <s:urlvalue= /example/Login jsp /> >登录</a></li>

  <li><a <s:urlaction= Register /> >注册</a></li>

  </ul>

  </body>

  </>

  在该页面的顶部 我们需要将struts 的标签库引入 语句为 <%@ taglib prefix= s uri= /struts tags %>

  在该页面 主要用到struts 的<s:url>标签 该页面主要用到该标签的两个属性 分别为value和action 其中action属性表示用action来产生url 而value表示使用的目标值 在页面上点击 查看源文件 按钮 可看到生成的语句分别变为

  <link rel= stylesheet type= text/css />

  <a >

  <a >

  由此可知使用该标签时 struts 会自动为我们带上下文路径 对于加了属性action的<s:url>标签 后面会自动带上 action 作为后缀

  点击 登录 链接后 跳转到Login jsp页面 该页包含一个登录表单 让用户输入用户名和密码信息 用户点击提交按钮 跳转到指定的Action——Login进行处理 Login jsp的内容如下

  <%@ page contentType= text/; charset=UTF %>

  <%@ taglib prefix= s uri= /struts tags %>

  <>

  <head>

  <title>登录</title>

  </head>

  <body>

  <s:form action= Login >

  <s:textfield name= username label= 用户名 />

  <s:password name= password label= 密码 />

  <s:submit/>

  </s:form>

  </body>

  </>

  该页用到Struts 的表单标签<s:form> <s:textfield>和<s:password>

  <s:form>的action属性表示表单提交后跳转的action的名称 此处为Login 该标签最终将生成HTML的form;

  <s:textfield>标签类同于HTML的<input type= text …> 其中name表示属性域的名称 label表示其前的提示名;

  <s:password>标签类同于HTML的<input type= password …> 其name和label类同于<s:textfield> 在此略

   )配置文件struts xml和example xml

  在上述jsp页面 我们需跳转到两个Action地址 需在struts 的配置文件中配置 因当工程变大时 一个庞大的struts 的配置极难维护 建议按包路径分开配置文件 所以本实例除了struts xml配置文件外 还新增了一个额外的配置文件example xml 该文件在struts xml中引用 struts xml放在src目录下 该文件的内容如下

  <?xml version= encoding= UTF ?>

  <!DOCTYPE struts PUBLIC

   //Apache Sofare Foundation//DTD Struts Configuration //EN

   dtd >

  <struts>

  <constant name= struts enable DynamicMethodInvocation value= false />

  <constant name= struts devMode value= false />

  <include file= example xml />

  <! Add packages here >

  </struts>

  可看到该文件通过<include file= example xml />将example xml也作为struts 的配置文件

  接下来 让我们看看example xml的配置

  <?xml version= encoding= UTF ?>

  <!DOCTYPE struts PUBLIC

   //Apache Sofare Foundation//DTD Struts Configuration //EN

   dtd >

  <struts>

  <package name= example namespace= /example extends= struts default >

  <action name= Login_input method= class= example Login >

  <result name= input >/example/Login jsp</result>

  <result type= redirect action >Menu</result>

  </action>

  <! 为学习struts 配置文件中通配符的使用 我们将未定义的action的引用都定向到example ExampleSupport这个Action中 >

  <! 需定向的Action的名字传到 中 eg 若请求Register这个action 当ExampleSupport返回success时 跳转到/example/Register jsp >

  <action name= * class= example ExampleSupport >

  <result>/example/ jsp</result>

  </action>

  </package>

  </struts>

   ) Login和ExampleSupport类以及验证配置类Login validation xml的编写

  在配置文件example xml中 定义了两个Action 下面我们用代码来实现这两个Action

  首先让我们来看看ExampleSupport这个Action 这个Action不做任何操作 集成自ActionSupport 是本工程的各Action类的基类 该类的代码如下

  package example;

  import opensymphony xwork ActionSupport;

  publicclass ExampleSupport extends ActionSupport

  

  接着让我们来看看Login这个Action 该类继承自ExampleSupport类 该Action需实现的业务逻辑如下

  a) 当用户名(username)或密码(password)有一者或两者为空时 登录不成功 跳转到登录信息输入页面;

  b) 当用户名(username)和密码(password)都不为空时 登录成功 跳转到主菜单页

  对于用户名和密码的验证 我们可以先考虑在Login类中用代码实现的方式 此时该类的代码如下

  package example;

  public class Login extends ExampleSupport

  public String execute() throws Exception

  if (isInvalid(getUsername()))

  return INPUT;

  if (isInvalid(getPassword()))

  return INPUT;

  return SUCCESS;

  

  private boolean isInvalid(String value)

  return (value == null || value length() == );

  

  private String username;

  public String getUsername()

  return username;

  

  public void setUsername(String username)

  this username = username;

  

  private String password;

  public String getPassword()

  return password;

  

  public void setPassword(String password)

  this password = password;

  

  

  当工程变得愈发复杂时 这一小段一小段验证代码将会变得难以维护 出于此原因 我们可以考虑采用struts 提供的验证机制来实现 在src目录下建立实现验证的xml文件Login validation xml 为Login Action中的username和password属性增加非空验证 验证配置如下

  <!DOCTYPE validators PUBLIC

   //OpenSymphony Group//XWork Validator //EN

   validator dtd >

  <validators>

  <field name= username >

  <field validator type= requiredstring >

  <message key= requiredstring />

  </field validator>

  </field>

  <field name= password >

  <field validator type= requiredstring >

  <message key= requiredstring />

  </field validator>

  </field>

  </validators>

  当验证未通过时 将不会进入Login Action中的execute方法 此时可删除掉Login这个Action中的验证内容 该类的execute方法直接跳转到SUCCESS即可 修改后的代码略

   )本地化输出——资源文件package properties

  为了本地化的输出验证错误信息 我们可以将参数信息和错误信息放入资源文件中 资源文件package properties位于src/example目录下 内容如下

  requiredstring = $getText(fieldName)不能为空

  password = 密码

  username = 用户名

  ssage = 该部分尚未构建 请稍候访问

  在src/example目下下建立对应的中文资源文件package_zh_CN properties 为了避免中文乱码问题 我们编写一个批处理文件code bat来对package properties进行编码处理 主要用到native ascii命令 其内容如下

  del package_zh_CN properties

  copy package properties package_zh_CN properties gbk

  native ascii encoding GBK package_zh_CN properties gbk package_zh_CN properties

  del package_zh_CN properties gbk

  del * bak

  运行该批处理文件 可在package_zh_CN properties中可看到编码后的资源文件信息 如下

  requiredstring = $getText(fieldName)\\u e d\\u fd\\u e a\\u a a

  password = \\u bc \\u

  username = \\u \\u \\u d

  ssage = \\u be \\u e \\u \\u c a\\u a\\u \\u efa\\uff c\\u bf \\u a d\\u \\u bbf\\u ee

   )Register jsp和Missing jsp的编写

  在 中的example xml中 我们配置了通配符映射 在Wele jsp中 我们使用

  <a <s:url action= Register /> >注册</a>

  其中的Register在example中找不到相关映射 于是在用户点击 注册 按钮时 将映射到通配符所映射的Action example ExampleSupport 而后跳转到Register jsp页面 其代码如下

  <%@ page contentType= text/; charset=UTF %>

  <%@ taglib prefix= s uri= /struts tags %>

  <s:include value= Missing jsp />

  该页面包含Missing jsp页面 其代码如下

  <%@ page contentType= text/; charset=UTF %>

  <%@ taglib prefix= s uri= /struts tags %>

  <>

  <head><title>未构建页面</title></head>

  <body>

  <p>

  <! 读取配置文件中的对应信息 >

  <s:text name= ssage />

  </p>

  </body>

  </>

  四 总结

  到此为止 我们的实例已构建完 可通过浏览器访问 看到我们的劳动成果 下面总结一下我们在该实例中学到的东西

  常用的一些标签的使用

  在本实例中 我们学习了<s:textfield> <s:password> <s:form>以及<s:url>的使用

  表单数据的验证

  本文描述了一个简单的表单的数据非空验证

   本地化输出错误提示信息

  在验证失败时 用资源文件来输出错误提示信息

   Strut 配置文件中通配符的使用

cha138/Article/program/Java/ky/201311/27914

相关参考

知识大全 Struts2 Validation框架的一些事宜

Struts2Validation框架的一些事宜  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 浅谈Struts2验证框架及用户注册

浅谈Struts2验证框架及用户注册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 spring struts2 ibatis框架整合开发

这里主要介绍一下spring+struts+ibatis所需要的jar包文件spring所需包  以上包为spring配置基本包ibatis所需包  有解决方法的朋友们希望能回复  与struts整合

知识大全 Struts2请求处理流程及源码分析

Struts2请求处理流程及源码分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 对Struts2 OGNL的分析与简介

对Struts2OGNL的分析与简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 浅谈Struts2分页的实现与代码实例

浅谈Struts2分页的实现与代码实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  关于Str

知识大全 实例详解struts2常用的******

   大家都知道吧在struts中提供了一些常用的******其中就包括对异常处理的******我们直接声明使用即可很方便的哟!下面来举个例子说明一下 &nbs

知识大全 从实例看struts2运行原理

  简单例子  先做一个最简单的struts的例子在浏览器中请求一个action然后返回一个字符串到jsp页面上显示出来  第一步把struts最低配置的jar包加入的项目中  monslogging

知识大全 使用Validation框架验证数据

Struts2教程5:使用Validation框架验证数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

构建保险业竞争力分析的理论框架

构建保险业竞争力分析的理论框架构建保险业竞争力分析的理论框架,由核心竞争力、基础竞争力和环境竞争力三大要素组成保险业竞争力分析理论框架,即“三位一体”的保险业竞争力结构体系。对于发展中国家或成长性国家