Struts2学习笔记day01

1.Struts1缺点
 1.侵入性的,对于Servlet的API的依赖比较严重【耦合度比较高】
 2.ActionForm数据模型的提供,在开发中会造成不良的影响


2.Struts2[MVC的框架,单控制器的框架]有apache提供
   Struts1和Struts2没有任何关系  struts1-->Serlvet
                                  struts2-->webwork

3.Struts2的框架
   1.下载jar包 struts2.1.8 /struts2.1.6

4.Struts2环境的搭建
   1.导入jar包
      1).核心jar包
         struts2-core-2.1.8.jar
      2).导入第三方jar包
         xwork-core-2.1.6.jar  是webWork的核心jar包
     oro-2.0.8.jar  验证
     ognl-2.7.3.jar 对象图导航
         freemarker-2.3.15.jar 模板
         antlr-2.7.2.jar 动态字节码
     commons-*.jar
  
   2.导入配置文件
       struts.xml文件在当前项目的src下面

5.Struts2的开发
   1.配置Struts2的单控制器在web.xml中作为一个过滤器
      <filter>
      </filter>

   2.开发Action
      implements Action 接口

   3.配置文件 struts.xml的声明
      <package name="自定义" namespace="/" extends="struts-default">
         <action name="请求" class="action的全路径">
      <result name="action返回的字符串">/跳转的路径</result>
     </action>
      </package>
 
   4.struts2的默认请求为 *.action 或者 *

6.Struts2开发Action的方式
  1.implements Action
  2.一个java类
  3.extends ActionSupport  {提供了Struts2中很多额外功能;普遍使用}


7.Struts2默认执行Action中的execute()方法
  如果<result>/ok.jsp</result> 表示Action返回的结果为success;

8.登陆案例

9.Struts2.0对于JSP中数据的提交的封装
  1)Struts2.0会将Jsp中提交的数据与对应的Aciton属性进行赋值
  2)Struts2.0框架会将Jsp中提交的数据以对象的形式进行封装
    1)LoginAciton {
     private User user;
    }
      User{
       private String name;
      }
   jsp: <input name="user.name" type="text"/>

10.Struts2.0如何实现数据的封装
   1)ActionContext:往作用域中添加数据
     在Action中通过
       ActionContext ctx=ActionContext.getContext();//单例设计模式
       单例设计模式:保证在java的应用程序中,一个类只有一个实例
       单例的常用形式:类的构造器为private
      public class SingleUser{
        private static SingleUser user=new SingleUser();
        private SingleUser(){//私有的构造器
    }
    public static SingleUser getUser(){
       return user;
    }
      }
     SingleUser user=SingleUser.getUser();
     Calendar c=Calendar.getInstance();

  ctx.getxxx().put(key,value);
  public class ActionContext(){
     private HttpServletRequest;
     private HttpSession;
     private ServletContext;
     put(key,value){
        HttpServletRequest.setAttribute(key,value);
     }
  }

  Struts2.0框架默认将Action的属性放入在值栈中

  2) LoginAction exetends ActionSupport implement ServletRequestAware
      private HttpServletRequest request;
      @Override
    public void setServletRequest(HttpServletRequest request) {
       this.request=request;
    }

11.result跳转类型
  <result name="" type="dispatcher">jsp页面</result>
      一个Action 转发到 一个 Jsp页面【默认】
  <result name="" type="redirect">jsp页面</result> 
      一个Action 重定向到 一个Jsp页面
  <result name="" type="chain">actionName </result>    
      aAction 转发到 bAction
  <result name="" type="redirectAction">actionName</result>
      aAction 重定向到 bAction

你可能感兴趣的:(struts2)