zoukankan      html  css  js  c++  java
  • struts2学习笔记2 -struts2的开发步骤和工作原理

    struts2的开发步骤:

    1.先定义一个能发送请求的页面,可以是链接,也可以是表单(form)

    2.开发action类,struts2对action并没有过多的要求,只要求:

    a 推荐实现action接口,或继承actionsupport类

    b 为每个请求参数都提供feild,并为之提供相应的setter和getter方法

    c 该action类应该有无参数构造器

    3.配置action类

    所有action都需要放在package里配置。

    <action>元素有如下属性:

    name 指定该action处理那个请求

    class 指定该action对应的处理类 即java文件

    method:指定使用action的那个方法来处理用户请求。默认是execute()方法

    struts2工作原理和流程:

    1.浏览器发送请求,abc.action,.action看web.xml中配置的filter

    2.浏览器发送的请求被StrutsPrepareAndExecuteFilter来过滤所有的请求(在web.xml)指定该类

    3.StrutsPrepareAndExecuteFilter会根据class路径找到该action类,会去创建action实例,加入请求为abc,StrutsPrepareAndExecuteFilter会搜索struts.xml中name为abc的action配置,根据class属性使用反射来创建action实例

    4.4.调用
    Map<String,String>

    paramMap=request.getParamterMap();
    ----返回所有请求 参数名使用循环(String

    paramName:paramMap.keyset()){
       
    //得到请求参数名对应的setter方法。
    action类.getMethod("set"+paramName的首字母大写)


    //得到请求参数对应的值
    String paramValue=paramMap.get(paramName);
    //已action实例为调用者,调用setter方法,把请求参

    数值作为参数值传入。
    setter.invoke(actionInst,paramValue);
    5.再通过反射调用method属性所指定的方法,返回一个

    字符串
    6.根据struts.xml文件中的<result.../>元素的name以

    及物理视图资源,跳转到实际的视图资源

    action类.getMethod("set"+paramName的首字母大

    写)//请求参数对应的setter方法

    -------------------------------------如何在

    action中访问servlet api--------------------
    有些时候需要访问servlet api 比如我们要把数据存入

    session、application。以及添加cookie

    (response.addCookie())
    struts2提供了两种方式访问servlet api :
    a.伪访问。借助于ActionContext。
    ActionContext提供了getSession  -模拟访问http

    session
                       getApplicatin -模拟访问

    Application
    b 真访问 添加cookie 直接访问servlet api 借助月

    ServletActionContext
    ServletActionContext提供了如下静态方法;
    static PageContext getPageContext();
    static HttpServletRequest getRequest();
    static HttpServletResponse getResponse();
    static ServletContext getServletContext();

  • 相关阅读:
    Postgresql10离线安装
    Clickhouse集群安装部署
    Clickhouse建表语法、视图语法、数据表DDL(数据定义语言)、数据DML(数据操作语言)
    Clickhouse基础语法、数据类型、数据表引擎学习
    Spring4.0+Mybatis整合时占位符无法读取jdbc.properties的问题
    Code: 210. DB::NetException: Connection refused (localhost:9000)
    使用Jdbc的方式连接Clickhouse列式数据库
    Dbeaver连接不上远程服务器部署的Clickhouse问题
    Clickhouse入门学习、单机、集群安装部署
    Another Redis DeskTop Manage一款免费的Redis可视化工具
  • 原文地址:https://www.cnblogs.com/binggu/p/4041474.html
Copyright © 2011-2022 走看看