目录结构
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<display-name></display-name>
<!-- 配置过滤器 -->
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>
<title>struts2访问的package</title>
</head>
<body>
<a href="${pageContext.request.contextPath }/a/b/good">struts2的案例</a><br/>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- dtd约束 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 使用constant元素覆盖struts2的配置 -->
<!-- 开起开发模式 -->
<constant name="struts.devMove" value="true"></constant>
<!-- 覆盖默认的扩展名,改成以.do为后缀的-->
<!-- <constant name="struts.action.extension" value="do"></constant> -->
<package name="p1" extends="struts-default" ></package>
<package name="p2" extends="struts-default" namespace="/a/b">
<action name="good" class="cn.mumu.action.HelloAction.HelloAction" method="aimumu">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
HelloAction.java
package cn.mumu.action.HelloAction;
public class HelloAction {
public String aimumu(){
System.out.println("我相信你一定会成功的!");
return "success";
}
}
packege中的namespace详解
namespace的默认值:
a.不写该属性
b.写了该属性,取值是一个" ".
注意:默认值不是/
动作类的搜索顺序:
即:
<a href="${pageContext.request.contextPath }/a/b/good">struts2的案例</a><br/>
先会/a/b,
如果<a href="${pageContext.request.contextPath }/a/b/c/good">struts2的案例</a><br/>
这样的话,会先去找/a/b/c,有就执行,没有就找/a/b