Structs2学习笔记

1.Struts是流行和成熟的基于MVC设计模式的web应用程序框架
2.MVC模式的过程
  用户输入-Controller(控制器)--将用户输入的指令和数据类型传递给业务模型--
  Model(模型)--进行业务逻辑判断和数据库的存取--(数据库)--进行业务选择不同的视图--
  View(视图)--将结果反馈给用户(形成闭环)
3.把Struts的jar包放到WEB-INF下面的lib中。
4.Struts项目的创建,现在web.xml中配置Structs2.然后在Struct.xml
中写配置,那个package name="" 一般也即是action的名字,可以直接访问
5.web.xml中的<filter-name> 表示过滤器的名字,<filter-mapping>中的
<url-pattern>表示过滤器的路径,/*表示全部文件。
6.Struct.xml中文件的介绍
(1)<include file=""> include是struts2组件化的方式,可以将每一个功能模板独立到一个xml配置文件中,然后用include引入
(2)<package name="" extends="" namespace="">
name:package的名称, extends:package要继承的包,一般为Struts.default
namespace:表示包的路径,/表示全路径。  
(3)<interceptor name="" class=""> 定义拦截器,name:拦截器的名称,class:拦截器类路径
(4)<interceptor-stack  name=""> 定义拦截器栈<interceptor-ref  name="">定义拦截器子类的name
(5)<default-interceptor-ref name=""> 表示默认拦截器,所有的action都会经过的
(6)<global-results>表示全局results配置,结果集--可以跳转jsp
(7)<action name="" class=""> Action的配置,一个action可以被多次的映射
     还有一个method的属性,表示方法。
     里面可以定义<interceptor-ref name=""><result name="" type=""><param name="">


8.struts.properties中配置struts常量
   struts.action.extension=action,do,struts2即可把action后缀改成其他(do)
9.struts2的搜索路径:从/struts根目录出发,查找namespace包路径是否存在
  如果不存在,接往上一级的查找,直到根目录找action,没有的话即报错。
10.动态访问class中的action
(1)加上method属性方法,记得name不能相同,直接访问。
(2)感叹号方式:<package>外加上<constant name="struts.enable.DynamicMethodInvacation" value="true"></constant>
     然后在大<action>中多添加几个result方法,定义不同的result.name。
     用eg:helloworld!add.action访问,其他add为<result name="">;
(3)通配符方式:
  Coding:
   <action name="*-*" method={2} class="com.lzk.{1}">
<result>/result.jsp</result>
<result name="add">/{2}.jsp</result>
<result name="update">/{2}.jsp</result>
   </aciton>
 这样通过访问localhost:8080/hello_add即可访问相应的到action
 其中{1}表示第一个*,依次类推。
11.<default-interceptor-ref name="">表示默认的action
12.<constant name="struts.action.extension" value="html"></constant>用于修改action的后缀,达到隐藏的效果,也可以不加
   多个的话用逗号隔开即可。
13.参数介绍
(1)使用action接收
用普通的form表单提交到相应的action,然后在Struts.xml中配置即可,在主java中师兄get/set方法


(2)使用Domain Model接收参数
新建对象User,提供get/set方法,在主java中实例化一个user对象,生成get/set方法
改变form表单中的value,eg:user.username,user.password
(3)使用ModelDriveb接收
拓展ModelDriven<User> 然后实例化User,在提供getModel()方法。
传入List<String> BookList,改变form表单中的value=BookList[0]之类
        传入List<User> User,改变form表单中的value=BookList[0].username之类
14.<result name=""> /success.jsp</result>这个name可以指定string也可为空,默认为success.
15.关于设置回访结果的
(1)在<action>中添加<result name="input">结果,指定相应的.jsp页面
     那么在参数错误的时候将自动跳转到此页面
(2)用if判断条件添加this.addFiledError("username" ,"string")即可为错误添加提示信息
     需要return input,也可不返回则放在validate()方法里
 16.拦截器方法在Aciton执行之前和之后执行
 17.拦截器栈相当于对个拦截器的组合,拦截器栈也是拦截器
 18.实现自定义拦截器
   method:继承AbstractInterceptor类
--提供init()和destroy()方法的空实现
--只需实现intercept方法即可
   coding:String result = invocation.invoke();//执行下一个拦截器,如果是最后一个
 则执行目标Action
   在Struts.xml中注册<interceptors><interceptor name="" class="" >
   之后再<action>中引用拦截器<interceptor-ref name="">
 19.Struts中定义的拦截器在default-Struts.xml中。
 20.有其他的拦截器栈之后,还是要手工的引用拦截器栈的
     用<interceptor-ref name="defaultStack"> 一般需放在最上方。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值