![]()
提前祝大家新年快乐~~~!
项目是最好的学习方式,只是讲知识点的效果不是很好,你应该做的是学到一套自己的学习方法,才能受用终生
这里有一个概念叫做命名空间(namespace),第一天的学习中基本了解到struts2的运行过程,一切都要从URL地址开始,牢记这一点
根据struts中的内容,
命名空间你可以把它理解为包名,而action可以称为类名,就相当于是java中的包和类一样,映射到xml文件中,只是把他们写到了配置文件中,package的作用可以区分不同的包名和类名, 而namespace 表示的是url地址中解析的位置
第一天我们知道url会先找到namespace 中的位置,再根据namespace的位置找到对应的action名,把结果返回给客户端
所以上面第一个访问方式是这样的:
记住:struts2中用道德路径都是绝对路径
上面第二种方式访问方式:
你可以看到第二种访问方式没有写namespace,意思就是你对命名空间没有要求,任何的路径都会访问到namespace.jsp,把结果返回给你:

如图:你的命名空间可以随意起名字,但是最后一个访问路径的名字一定要是对应的 action对应的路径,所以找到的是action下面的java_web
Action:
下面来谈一谈action关键字
我们新建三个class 如图:
在IndexAction1 中是最简单的实现方式:
public class IndexAction1 {
public String execute() {
return "success";
}
}在IndexAction2 中采用实现外部接口的方式public class IndexAction2 implements Action{
public String execute() throws Exception {
return "success";
}
}
在IndexAction3 中采用继承的实现方式
public class IndexAction3 extends ActionSupport{
public String execute() {
return "success";
}
// 一般用第三种方式,ActionSupport实现了execute(),返回的是一个"success"常量
}
一般我们会用第三种方式,用继承ActionSupport的方法比较灵活
源码中返回的SUCCESS,是一个final 常量:

而你在struts.xml需要配置这个class 类的映射
IndexAction3中返回的success 结果就是 ??struts.xml文件中的result 中的name
Path:
strut2中的路径一般用的都是绝对路径
新建一个PathAction:
public class PathAction extends ActionSupport{
public String execute() throws Exception {
return "path";
}
}
action返回一个path 所以你需要在struts.xml中 的result改为path
结果匹配返回到path.jsp中:
request对象的方法见 博客:
如果你用的是index.jsp 使用的是相对路径,但我们用的是绝对路径,所以你需要采用第一种方式。解析xml
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-80767-1.html
这种被动的方式有其客观背景