尚学堂马士兵struts2 课堂笔记(一)
尚学堂马士兵struts2 课堂笔记(一)
06_尚学堂马士兵_Struts2_Struts2_HelloWorld_5
在默认情况下,刚修改struts.xml后在tomcat中没有立刻刷新要么重新启动tomcat,要么加上上面的常量 dev development
07_尚学堂马士兵_Struts2_Struts2_HelloWorld_6
在eclipse里的struts.xm文件敲<是没有反应的,eclipse没有给出提示,其实eclipse里面也不知道给给出怎么样的提示.
很简单 看struts.xml文件的最上面几行
让Struts2的核心Filter拦截所有请求 -->
找到struts.xml在struts里面通过命名空间/actionname/result(其中命名空间后面再谈)找到响应的映射地址 返回给客户端.
其实struts干了什么,这么简单的问题为什么要搞这么复杂?
这就叫做简单问题复杂化,你只有在学习的时候能把简单的问题复杂化,当面对复杂工作的时候,你才能把复杂问题简单化.其实设计模式不就是干了个这事吗?
言归正传,struts到底干了什么?
就是把请求与视图分开!
10_尚学堂马士兵_Struts2_Struts2_Namespace_命名空间
Struts里面有package.这东西是干什么用的?
其实它和java里面的package一样.区分类而已,如果有两个action 都叫loginaction要给是前台的一个是后台的.放到要给package里面肯定不行 所以就有两个package 一个front一个back
ok 就这么简单就 这么方便,甚至不需要动笔 人人都要称呼一声神童啊!
namespace决定了action的访问路径,默认为"",可以接收所有路径的actionnamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action,或者/xxx/yyy/index.action.namespace最好也用模块来进行命名
在上面的namespace里是/ 因此我们要访问这个action就localhost:8800/webname/index.action (.action可以省略)
如果改成 namespace="/aa/"那么访问的url就是localhost:8800/webname/aa./index.action (.action可以省略)以此类推
另外也可以给namespace赋为空”” 这个时候其他namespace处理不了的请求都交给它来处理.
另外 项目复制后
这位置不会改变,点项目邮件properties 上面查找web就ok
11_尚学堂马士兵_Struts2_Struts2_Action
index这个action指定的class可以有三种写法
一最普通的类public class IndexAction1 {public String execute() { return "success";}}二实现action接口import com.opensymphony.xwork2.Action;public class IndexAction2 implements Action {@Overridepublic String execute() { return "success";}}三继承actionSupportpublic class IndexAction3 extends ActionSupport {@Overridepublic String execute() { return "success";}}
选择那种方式
?
第三种!
第一种得自己写,第二种只是实现了action接口,而actionsupport里面已经给我们写好了一些常用的方法.而且actionsupport本身就实现了action接口
再另外
这里面怎么没有
class
没有制定classs就默认使用actionsupport,而actionsupport本身的execute方法返回的就是succes,再看rusult,如果要指定返回success的响应页面,那么success就可以不写.
在上面这种情况下,就是只要你请求index.action我就给你返回Namespace.jsp
12_尚学堂马士兵_Struts2_Struts2_Path_路径问题
Struts里面的如下
类如下
package com.bjsxt.struts2.path.action; public class PathAction {public String execute() {return "path";}}
Index.jsp如下(index.jsp也在webroot下 和path.jsp同级)
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>