马士兵 Struts2 视频内容

0.5h

v1: 讲解了目录

v2 :简历web project

v3 :配置,copy struts3源码中的例子,blank

v4:简单配置,得到输出的/hello.action 、/hello 输出相同

v5:习惯


0.5h

v6  

1,定义开发模式,对project进行修改之后不用重新deploy,  在web.xml

 

 下面是4个开发模式常用配置的简介---
    <!-- 开启使用开发模式,详细错误提示 -->
    <!-- <constant name="struts.devMode" value="true"/>-->
    <!-- 指定每次请求到达,重新加载资源文件 -->
    <!-- <constant name="struts.i18n.reload" value="true"/>-->
    <!-- 指定每次配置文件更改后,自动重新加载 -->
    <!-- <constant name="struts.configuration.xml.reload" value="true"/>-->
    <!-- 指定XSLT Result使用样式表缓存 -->
    <!-- <constant name="struts.xslt.nocache" value="true"/>-->

2、建立jar文件对于的源码,以及doc文件(API文档)ruts.devMode" value="true"/>-->
v7 web.xml 自动补齐功能的配置
v8 运行机制
v9 运行机制,可以参考图Struts2.jude
 v10 
拷贝项目注意事项;
import项目的注意事项
 
v11
  具体视图的返回可以由用户自己定义的Action来决定
具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
具体Action的实现可以是一个普通的java类,里面有public String execute方法即可
或者实现Action接口
不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法
v12
struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
index.jsp 
虽然可以用redirect方式解决,但redirect方式并非必要。 
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径) 
或者使用myeclipse经常用的,指定basePath

v13
Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用method=来指定执行哪个方法 也可以在url地址中动态指定(动态方法调用DMI)(推荐)
添加用户 <a href="<%=context %>/user/userAdd">添加用户</a>
添加用户 <a href="<%=context %>/user/user!add">添加用户</a>


前者会产生太多的action,所以不推荐使用
http://localhost:8080/Struts2_0500_ActionMethod/user/userAdd
    <package name="user" extends="struts-default" namespace="/user">
        <action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">
            <result>/user_add_success.jsp</result>
        </action>
        
 
http://localhost:8080/Struts2_0500_ActionMethod/user/user!add
        <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
            <result>/user_add_success.jsp</result>
        </action>
    </package>
 
v14
使用通配符,将配置量降到最低
添加学生 删除学生 
不过,一定要遵守"约定优于配置"的原则 
添加老师 删除老师 添加课程 删除课程
    <package name="actions" extends="struts-default" namespace="/actions">
         <!--   可以将add和delete简化为下面一个action-->
        <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
            <result>/Student{1}_success.jsp</result>
        </action>
        
        <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
            <result>/{1}_{2}_success.jsp</result>
            <!-- {0}_success.jsp -->
        </action>
    </package>
v15   http://blog.csdn.net/mengxiangyue/article/details/7438679
我们就可以在页面中直接使用这样的方法传递参数了:<a href="user/user!add?name=a&age=8">。这里使用的连接的方式,我们也可以改成使用表单。使用这样的方式,struts会自动将传递过来的参数值赋值给对应的属性。

v16 ModelDriven,用得较少,但体现出基本的MVC模式。

v17 
action 属性,domian model, dto,   modelDriven,三种接受参数的方法。
其中第二种最多使用。
讲解了查看struts docs.
v18 
版本问题
 v19     
简单数据验证
public String add() {
		if(name == null || !name.equals("admin")) {
			this.addFieldError("name", "name is error");//加入value stack;
			this.addFieldError("name", "name is too long");
			return ERROR;
				return SUCCESS;
	}
取值方法
<s:property value="errors.name[0]"/>
 关于property :http://hamlzf.iteye.com/blog/1669490
有关于值栈的问题:Struts ValueStack Debug

v20 
<default-action-ref name="index"></default-action-ref>
    	<action name="index">
    		<result>/default.jsp</result>
    	</action>
简单数据验证
v21
 为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action中,直接使用HttpServletRequest、HttpSession和ServletContext对应的Map对象来保存和读取数据。
所以,在struts中的HttpservletRequest 的map值会复制到JSP中的httpRequst
V22 
取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:
<ol>
	<li>前三者:依赖于容器</li>
	<li>前三者:IOC</li> (只用这种)
	<li>后三者:依赖于容器</li>
	<li>后三者:IOC</li>
</ol>
v23 
v24  默认action ,可以用为设置为默认主页
<default-action-ref name="index"></default-action-ref>
    	<action name="index">
    		<result>/default.jsp</result>
    	</action>

v25
action总结

v26   小补充
v27  result type
	    <action name="r1">
	    	<result type="dispatcher">/r1.jsp</result>服务器端跳转
	    </action>
    <action name="r2">
    <result type="redirect">/r2.jsp</result>客户端跳转
   </action>    
   <action name="r3">
    <result type="chain">r1</result>
   </action>    
   <action name="r4">
    <result type="redirectAction">r2</result>
   </action>
v28 result type 补充
http://blog.csdn.net/calvex880714/article/details/8958019 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值