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>