<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!--
package:包,用于对Action进行封装。
1、name:包名,根元素下可以有多个包,彼此之间不能重名。
2、extends:继承,用于指定继承的包,相当于将继承包下的配置信息复制到了当前包下。
3、namespace:命名空间,用于规定Action的访问路径,必须以“/”开头。
4、请求Action时,按照如下格式拼写URL:
http://IP:PORT/ProjectName/NAMESPACE/ACTIONNAME.action
-->
<package name="day01" namespace="/demo" extends="struts-default">
<!--
action:业务控制器,用于注册业务控制器组件(类)。
1、name:action名称,用于规定Action的访问路径。
一个包下可以有多个action,彼此之间不能重名。
2、class:业务控制器组件,用于指定业务控制器对应的类。
3、method:方法,用于指定访问当前action时要调用的方法。
-->
<action name="hello" class="action.HelloAction" method="sayHello">
<!--
result:输出组件,用于转发、重定向、直接输出。
1、name:名称,一个action下可以有多个result,彼此之间不能重名。
2、默认做转发,标记内容设置成转发的页面。
-->
<result name="success" >
/index.jsp
</result>
</action>
<action name="image" class="action.HelloAction" method="test">
<result name="image" type="stream">
<param name="inputName">imageStream</param>
</result>
</action>
<action name="redirect" class="action.HelloAction" method="redirect">
<result name="redirect">/redirect.jsp</result>
</action>
</package>
</struts>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>My JSP 'index.jsp' starting page</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>
This is my JSP page. <br>
<form action="/struts2copy/demo/hello.action" method="post">
真实姓名:<input name="realName"><br/>
NickName:<input name="user.name"><br/>
Password:<input name="user.pwd"><br/>
<input type="submit" value="提交">
</form>
<h1>${user }</h1>
<h1>${realName }</h1>
<h1><s:property value="some"/></h1>
<h1><s:property value="cityArray[1]"/></h1>
<h1><s:property value="cityList[1]"/></h1>
<h1><s:property value="cityMap.beijing"/></h1>
<h1><s:property value="'123456'"/></h1>
<h1><s:property value="'abc'.toUpperCase()"/></h1>
<h1><s:property value="{'a','b','c'}"/></h1>
<h1><s:property value="#{'a':'c','b':'d'}" /> </h1>
<h1>观察ValueStack的结构</h1>
<h1><s:debug /></h1>
<h1>栈顶</h1>
<h1><s:property/></h1>
<h1><s:property value="#action.user.name"/></h1>
<h1>
<s:iterator value="list" var="s">
<s:property value="s"/>
</s:iterator>
</h1>
<h1>
<s:iterator begin="begin" end="end" value="list" var="s">
<s:property value="#s"/>
</s:iterator>
</h1>
<form>
<input name="name" value="<s:property value="name"/>"/>
<input value="submit" type="submit">
</form>
<form action="/struts2copy/demo/redirect.action" >
<input type="submit" value="redirect"/>
</form>
<img alt="alt" src="/struts2copy/demo/image.action">
</body>
</html>
package action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import model.User;
public class HelloAction {
public HelloAction(){
ActionContext context = ActionContext.getContext();
//imageStream = this.getClass().getResourceAsStream("screen.png");
System.out.println(19);
System.out.println(imageStream);
}
public String redirect(){
return "redirect";
}
public String test() throws FileNotFoundException{
imageStream = new FileInputStream(this.getClass().getResource("/screen.png").getPath());//new FileInputStream(new File("screen.png"));
System.out.println(28);
System.out.println(imageStream);
return "image";
}
private InputStream imageStream = this.getClass().getResourceAsStream("screen.png");
public InputStream getImageStream() {
return imageStream;
}
public void setImageStream(InputStream imageStream) {
this.imageStream = imageStream;
}
/**
* 在业务方法中输出“Hello,Action.”
*/
public String sayHello() {
System.out.println("Hello,Action.");
System.out.println(user);
cityList.add("zhengzhou");
cityList.add("chongqing");
cityList.add("qingdao");
// 初始化Map数据
cityMap.put("beijing", "2300万人口");
cityMap.put("shanghai", "2000万人口");
cityMap.put("guangzhou", "1800万人口");
list.add("xiuye");
list.add("wuming");
list.add("kkkkk");
System.out.println(name);
return "success";
}
private String[] cityArray = new String[] { "beijing", "shanghai",
"guangzhou" };
private List<String> cityList = new ArrayList<String>();
private Map<String, String> cityMap = new HashMap<String, String>();
private String realName;
public String[] getCityArray() {
return cityArray;
}
public void setCityArray(String[] cityArray) {
this.cityArray = cityArray;
}
public List<String> getCityList() {
return cityList;
}
public void setCityList(List<String> cityList) {
this.cityList = cityList;
}
public Map<String, String> getCityMap() {
return cityMap;
}
public void setCityMap(Map<String, String> cityMap) {
this.cityMap = cityMap;
}
private List<String> list = new ArrayList<String>();
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
private Integer begin = 1;
private Integer end = 2;
public Integer getBegin() {
return begin;
}
public void setBegin(Integer begin) {
this.begin = begin;
}
public Integer getEnd() {
return end;
}
public void setEnd(Integer end) {
this.end = end;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
System.out.println(realName);
}
private User user;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
System.out.println(user);
}
private String some = "WUMING";
public String getSome() {
return some;
}
public void setSome(String some) {
this.some = some;
}
}
package test;
import static org.junit.Assert.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import org.junit.Test;
import action.HelloAction;
public class test {
@Test
public void test() throws FileNotFoundException {
HelloAction h = new HelloAction();
System.out.println(h.getClass().getClassLoader().getResource("screen.png"));
String s = null;
try {
s = h.test();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
File f = new File(".");
System.out.println(f.getParent());
System.out.println(s);
System.out.println(this.getClass().getResource("/screen.png").getPath());
System.out.println(new FileInputStream(this.getClass().getResource("/screen.png").getPath()));
InputStream in = new FileInputStream("/screen.png");
System.out.println(in);
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>struts2copy</groupId>
<artifactId>struts2copy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>struts2copy</name>
<description>struts2 example</description>
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>bean-validator</artifactId>
<version>3.0-JBoss-4.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.enterprise.deploy</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.jms</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.management.j2ee</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.resource</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.security.auth.message</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.security.jacc</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet.jsp</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api-osgi</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api-osgi</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-osgi-bundle</artifactId>
<version>1.0.1-SP3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.22</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.11.0.GA</version>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.24</version>
</dependency>
<dependency>
<groupId>xmlpull</groupId>
<artifactId>xmlpull</artifactId>
<version>1.1.3.1</version>
</dependency>
<dependency>
<groupId>xpp3</groupId>
<artifactId>xpp3_min</artifactId>
<version>1.1.4c</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.3.24</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warSourceDirectory>WebRoot</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>