struts 官网下载
http://www.apache.org/
http://struts.apache.org/
http://struts.apache.org/download.cgi#struts2231
. 下载struts2.1.6 http://struts.apache.org/download.cgi#struts217
(选择下载full distribution)
2. 下载myeclipse,http://www.myeclipseide.com
3. 下载tomcat,http://tomcat.apache.org
4. 下载xwork,http://www.opensymphony.com/xwork (要注意的是下载与struts2.1.6的对应版本,即2.1.2)
安装与设置
1. 解压struts2.1.6,假设解压后位于d:\struts2目录
2. 安装MyEclipse,任何版本都可以
3. 假设你已经安装好jdk和tomcat了,如d:\tomcat
HelloWorld
1. 建立项目
a) 打开eclipse
b) 新建项目
c) 选择myeclipse-java enterprise projects-web project
d) 项目名称:struts2_0100_introduction
e) 选择java ee 5.0
2. 设定server
a) window – preferences – myeclipse – servers – tomcat – 6.x
b) 选择tomcat home directory
c) 选择enable
d) finish
3. 设定jdk环境
a) window – preferences – java – installed jres
b) 如果没有对应的JDK(不是JRE),选择add
c) 选择standard VM -> next
d) 选择JDK对应的Directory
e) 将刚刚设定的JDK设为默认
4. 建立第一个struts2.1的程序
a) 找到struts目录下对应的apps目录
b) 解压struts2-blank-2.1.6.war
c) Copy对应的lib的jar文件,需要除junit和spring-test之外的所有文件,其中commons-io的jar包会在文件上传和下载时需要,其他为必须
d) Copy对应的struts.xml到src目录,在package explorer视图进行操作
e) 注释掉struts.xml的多余内容
f) 建立HelloStruts2_1.jsp文件
g) *修改jsp文件的默认编码属性window-preferences-web-jspfiles-设为Chinese,National Standard
h) 在struts.xml中照原配置进行对应的配置
i) 修改对应的web.xml,建立struts2的filter(参考struts自带的项目)
5. 运行项目
a) 可以首先部署到tomcat上项目
b) 也可以项目右键debug as – myeclipse server app,选择刚刚建立好的server
6. 其他
a) 学习建立struts的dev-mode,好处在于我们修改了配置文件的时候能够自动热替换
b) 建立jar文件对应的源码D:/share/tools/struts-2.1.6/src/core/src/main/java,以及xwork对应的源码,以及对应的javadoc location,(更好的方式是建立自己的user-library)
c) 浏览struts的目录
d) 认识eclipse jee的项目部署目录,认识如何修改webapp的context-root,项目copy改名后可能会出现的问题
e) package explorer – 建立jar的源文件和目标关联,navigator – 观察所有的内容
f) 认识Action的后缀名,在struts2默认中,带不带action都可以
常见问题:
1. struts.xml不自动提示
a) window – preferences – 搜索 catalog – add
b) 选择key type为URI
c) key: http://struts.apache.org/dtds/struts-2.0.dtd
d) location: 对应的dtd文件,位于struts-core包中,解压开,指定相应位置,如:D:\share\0750_Struts2.1.6\soft\struts-2.1.6\lib\struts2-core-2.1.6\struts-2.0.dtd
2. 导入示例项目
a) 注意JDK的版本,应该是JDK6,否则会出class version的问题
b) 如果总是项目出问题,可以重建项目,单独拷文件
c) 还有一种情况是项目右键,properties – java – compiler 选择6.0
d) 另外,在tomcat配置中也要使用jdk6
3. devMode设为true就会出问题空指针问题
a) tomcat路径带了空格
4. 在使用ActionContext.getContext().get(“request”)取不到对象,为null值
a) web.xml不要使用2.0的filter,用新的
5. 在action的试验中,遇到一个奇怪的bug
a) 用default-action-ref指定一个action
b) 用*_*映射
c) 在地址栏中访问一个不存在的action,如adfsdfsfs
d) 结果居然会映射到*_*上
e) 如果换成*__*就没问题了
f) 靠,只能认为是bug
g) 下次用*-*,不用*_*
Action
1. 实现一个Action的最常用方式:从ActionSupport继承
2. DMI动态方法调用 !
3. 通配符配置 * {1} {2} …
a) *_*
4. 接收参数的方法(一般用属性或者DomainModel来接收)
5. 简单参数验证addFieldError
a) 一般不使用Struts2的UI标签
6. 访问Web元素
a) Map类型
i. IoC
ii. 依赖Struts2
b) 原始类型
i. IoC
ii. 依赖Struts2
7. 包含文件配置
8. 默认action处理
![](http://hi.csdn.net/attachment/201111/10/0_1320927304N8VN.gif)
打开项目方法
![](http://hi.csdn.net/attachment/201111/10/0_13209273169P9V.gif)
![](http://hi.csdn.net/attachment/201111/10/0_1320927523TTJJ.gif)
java EE 5.0 会自动的加上JSTL
会出现一个对话框只要你的级别比它高都没问题
加完一个Struts 2 项目的时候有几个地方还需要设置
1、部署tomcat 以下程序安装运行在
<constant name="struts.devMode" value="true"/> 报错
因为 D:java rj\web\tomcat-6.0.18 有空格
![](http://hi.csdn.net/attachment/201111/10/0_1320928026XXbh.gif)
改成如下目录没有报错,一切加载正常
![](http://hi.csdn.net/attachment/201111/10/0_1320936330J6bc.gif)
<constant name="struts.devMode" value="true"/>
OK
2、jdk安装
![](http://hi.csdn.net/attachment/201111/10/0_1320928210JfHA.gif)
![](http://hi.csdn.net/attachment/201111/10/0_1320928356Ta6Z.gif)
![](http://hi.csdn.net/attachment/201111/10/0_1320928374X64s.gif)
确认jdk
![](http://hi.csdn.net/attachment/201111/10/0_1320928498qY60.gif)
3、查看Struts 2 的软件
![](http://hi.csdn.net/attachment/201111/10/0_1320928857DKi9.gif)
把struts .xml 文件拷贝到src 目录下面去
![](http://hi.csdn.net/attachment/201111/10/0_1320928951OtW1.gif)
再把Struts需要用的jar文件拷贝到lib目录下面
![](http://hi.csdn.net/attachment/201111/10/0_1320930738o336.gif)
如果想看项目在硬盘上什么样子可以
Window ----> show view --->other ---> General 下面的Navigator
下一步再配置 web.xml
![](http://hi.csdn.net/attachment/201111/10/0_1320930806Rimj.gif)
- <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>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <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>
- </web-app>
- <url-pattern>/*</url-pattern> 永远这么写
把struts 标签里面的全部注释用来参考
- <?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>
- <!--
- <constant name="struts.enable.DynamicMethodInvocation" value="false" />
- <constant name="struts.devMode" value="false" />
- <include file="example.xml"/>
- <package name="default" namespace="/" extends="struts-default">
- <default-action-ref name="index" />
- <action name="index">
- <result type="redirectAction">
- <param name="actionName">HelloWorld</param>
- <param name="namespace">/example</param>
- </result>
- </action>
- </package>
- -->
- <!-- Add packages here -->
- </struts>
- <package name="default" namespace="/" extends="struts-default">
- <action name="hello">
- <result>
- /Hello.jsp
- </result>
- </action>
- </package>
用文本编辑器JSP 打开,页面打开会比较快
![](http://hi.csdn.net/attachment/201111/10/0_13209313806d11.gif)
写的第一个Hello.jsp程序
- <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>Hello Struts 2.1</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
- <body>
- Hello Struts 2.1 <br>
- </body>
- </html>
我用的是8.6 的myeclipse 程序可以把项目做为 server application 直接运行
![](http://hi.csdn.net/attachment/201111/10/0_1320932541USqh.gif)
选择刚配置好的Tomcat 服务器运行即可
运行先看看tomcat 服务器是否正常,循序渐进。
![](http://hi.csdn.net/attachment/201111/10/0_13209329274NDw.gif)
第一个struts 项目运行
![](http://hi.csdn.net/attachment/201111/10/0_1320932973fHJF.gif)
- <constant name="struts.devMode" value="false" /> 改成 <constant name="struts.devMode" value="true" /> 开发模式,自动加载项目,就是你改程序的时候马上有所反馈 不过必须要你的 tomcat 安装目录没有空格 否则会报错
要看struts2 里面的源码如下struts2 上点右键 D:\dongxing\SSH\struts\struts-2.1.6\src\core\src\main\java
![](http://hi.csdn.net/attachment/201111/10/0_13209373913yNy.gif)
这样就可以看见了
如果要看java docs文档
D:\dongxing\SSH\struts\struts-2.1.6\docs\struts2-core\apidocs
不过只有在一个类里面实现,选中你所要看的方法和属性-->F1 即可
![](http://hi.csdn.net/attachment/201111/10/0_13209380934vY8.gif)
![](http://hi.csdn.net/attachment/201111/10/0_13209383131L49.gif)
点击右边的文档即可
自动加载struts2的标签 struts2-core-2.1.6.jar 解压在一个文件里面 struts-2.0.dtd
window -->XML catalog
D:\dongxing\SSH\struts\struts-2.1.6\lib\struts2-core-2.1.6\struts-2.0.dtd
URi
http://struts.apache.org/dtds/struts-2.0.dtd
![](http://hi.csdn.net/attachment/201111/10/0_1320942069veZ9.gif)
结果自动提示如下:
![](http://hi.csdn.net/attachment/201111/10/0_1320942275SZay.gif)
设计模式主要目的: 就是可扩展性
struts 就是把你的请求和你的展现分开
JUDE 视图 struts运行机制
![](http://hi.csdn.net/attachment/201111/10/0_1320944079Q1Qz.gif)
![](http://hi.csdn.net/attachment/201111/10/0_1320943530xsST.gif)
![](http://hi.csdn.net/attachment/201111/10/0_1320943771G4QB.gif)