Struts 学习总结
一、 struts2 简介
struts2 官网地址: http://struts.apache.org/
struts2 官方开发介绍 : http://struts.apache.org/2.0.14/docs/core-developers-guide.html
struts 官方开发介绍本地地址 :
F:\ 编程资料 \ struts\struts-2.1.6-all\struts-2.1.6\docs\docs\guides.html (包括了所有使用的信息 , 相当重要)
F:\ 编程资料 \ struts\struts-2.1.6-all\struts-2.1.6\docs\docs\home.html
学习计划 : 首先将电子书看了再看文档。
在 Struts2 中,模型 - 视图 - 控制器模式通过五个核心组件来实现 —— Action 、拦截器?值栈 /OGNL ?结果类型和结果 / 视图技术。
在 “ struts.properties ” 文件中定义的属性都可以在 “ web.xml ” 文件的 “ init-param ” 标签中进行配置,或者通过 “ struts.xml ” 文件中的 “ constant ” 标签来修改(我们在下一章中会继续讨论这个标签)。
struts.properties 文件通常放在 Web 应用的 WEB-INF/classes 路径下。实际上,只要将该文件放在 Web 应用的 CLASSPATH 路径下, Struts 2 框架就可以加载该文件。
Struts2 使用了名为依赖注入 5—— 又名控制反转 —— 的技术来降低系统的耦合性。依赖注入可以通过构造器注入,接口注入和 setter 注入来实现。 Struts2 中用的是 setter 注入。这就是说,你只需要提供一个 setter ,对应的对象就可以被 Action 使用了。 Struts2 推荐的依赖注入框架是 Spring 框架,并通过插件对它进行配置。你还可以使用 Plexus ,或者是提供自定义的实现。
在 struts 中获得 HttpRequest 对象 :
Inteceptor 中获取 HttpServletRequest :
ActionContext ac = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) ac.get(ServletActionContext. HTTP_REQUEST );
Action 等其他类中获取 HttpServletRequest :
HttpServletRequest request = ServletActionContext. getRequest ();
String userNameReq = request.getParameter( "userName" );
配置 struts 应用程序步骤说明 :
1、 导入 struts 应用程序需要的 jar 包 (struts2 项目一般需要的 jar) 。
2、 配置 web.xml 文件 :
< filter >
< filter-name > struts2 </ filter-name >
< filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >
</ filter >
< filter-mapping >
< filter-name > struts2 </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
3、 在 src 路径下配置 struts.xml 初始文件。
<! DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd" >
< struts >
< include file = "struts-default.xml" />
</ struts >
4、 在 WebContent 路径下新建 html 文件,看是否能够访问。如果报 404 证明工程搭建有问题。
5、 成功访问,则创建对应的 jsp 文件和在 struts.xml 中配置对应的 action 等。在浏览器中访问对应的 action 时,如果采用标签则应该如下访问 :
<package name="tutorial" namespace="/" extends="struts-default">
页面 form 配置如下 :
< s:form action = "login" namespace = "/" >
User id : < input type = "text" name = "userId" /> < br />
Password : < input type = "password" name = "passwd" /> < br />
< input type = "submit" value = "Login" />
</ s:form >
如果采用 html 标记则配置如下 :
<form action="<%=request.getContextPath() /login.action">
注意 : 可以通过查看网页源码来看 form 的 action 是否配置正确。
6、 相关 Struts 书籍及资料
F:\ 编程资料 \ struts\struts-2.1.6-all\struts-2.1.6\docs\docs\other-resources.html
示例程序导航 :
Apache Struts 2 Documentation > Home > Tutorials > Bootstrap > Hello World
一、 Bootstrap( 引导 )
标签的使用 :<s:url> 的使用 .
<s:url var= "url" action= "Welcome" >
<s:param name= "request_locale" > en </s:param>
</s:url>
<s:a href= "%{url}" > English </s:a>
在 struts.xml 中 action 配置可以不用配置 class.
<action name= "Welcome" >
<result>/Welcome.jsp</result>
</action>
<default-action-ref> 用于在没有找到 action 的时候调用。
Struts 标签使用说明 :
<s:set> 标签设值,如果需要设置常量,需要在 value=”’’” 内部添加单引号。
<s:set var="name" value="'xieyun'" ></s:set>
动态传递参数
globalMessages_en_US.properties 配置如下 :myParam=xie-{0}
页面上调用如下 :
< s:text name = "myParam" >
< s:param > callan </ s:param >
</ s:text >
浪曦视频教程总结
一、基础知识说明
在 action 使用中,可以不继承 ActionSupport 类或实现 Action 接口。 Struts2 能够通过 struts.xml 文件中声明的 action 来反射解析 Action 类,但是该类必须包含一个返回字符串的 execute 方法。如果不声明 execute 方法会报错误如下 :
java.lang.NoSuchMethodException: com.test.action.LoginAction.execute()
java.lang.Class.getMethod(Unknown Source)
即使我们在 struts.xml 文件的 action 中申明一个 method 属性,指定一个方法,也会报上面的错误。
二、 struts2 类型转换
1 、 struts 中的错误验证
Action 继承 ActionSupport 后, ActionSupport 里面有一个 Validate() 方法,该方法负责在执行 execute() 方法前进行一些输入参数的简单验证,如果我们在该方法类添加了错误信息 (addFieldError("userName","userName is required");) ,那么我们的 result 将会执行一个 input 结果,跳转到提交的页面 ( 该 input 结果需要用户自己在 struts.xml 中进行配置 ) 。
示例程序如下 :
Login.jsp
<%@ page language = "java" contentType = "text/html; charset=UTF-8"
pageEncoding = "UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
发表评论
评论