• struts2基础


    1、到官网下载解压以后
    apps:struts2的示例
    docs:文档、api
    lib:核心类库,jar包
    struts2的配置文件有两份:配置action的struts.xml文件 配置struts2全局属性的struts.properties文件
    struts.devMode = false //指定struts2处于开发状态
    struts.configuration.xml.reload=true //指定当配置文件改变时,自动重新加载配置文件
    struts2的控制器由两个部分组成:FilterDispatcher和业务控制器Action
    Action类优点:Action类是一个pojo,具有很好的代码复用性,无需与servlet Api耦合,方便单元测试,execute方法仅返回一个字符串,该处理结果可以映射到任何视图,甚至是另一个Action。
    2、需要使用的jar包
    struts2-core-2.1.8.1.jar xwork-core-2.1.6.jar ognl-2.7.3.jar commons-logging-1.0.4.jar
    freemarker-2.3.12.jar commons-io-1.3.2.jar commons-fileupload-1.2.1.jar
    7个包为必须使用的包


    3、编辑web应用的web.xml配置文件,配置struts2的核心Filter
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    </filter>
    <!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    struts2默认拦截所有后缀为.action的请求。因此,如果将Action属性设置为*.action格式就可以被struts2拦截。

    导入jar包->配置->Action

    4、struts2对请求的响应过程是典型的AOP(面向前面编程)处理方式

    小例子:
    struts:
    <package name="mystruts" extends="struts-default" >
    <action name="login" class="system.LoginAction">
    <result type="chain">book</result>
    <result name="error">/hello.jsp</result>
    </action>
    <action name="book" class="action.BookAction">
    <result name="success">/test/book.jsp</result>
    <result name="error">/hello.jsp</result>
    </action>
    </package>
    BookAction:
    public String execute() throws Exception {
    String user = (String) ActionContext.getContext().getSession().get("user");
    if (user.equals("tiger")) {
    BookService bs = new BookService();
    setBooks(bs.getBookList());
    return SUCCESS;
    }else {
    return ERROR;
    }
    }
    book.jsp:
    <body>
    <table border="1" width="360">
    <s:iterator value="books" status="index">
    <s:if test="#index.odd==true">
    <tr style="background-color: #cccccc">
    </s:if>
    <s:else>
    <tr>
    </s:else>
    <td><s:property /></td>
    </tr>
    </s:iterator>
    </table>
    <%
    ValueStack vs = (ValueStack) request
    .getAttribute("struts.valueStack");
    String[] books = (String[]) vs.findValue("books");
    for (String b : books) {
    %>
    <tr><%=b%></tr>
    <%
    }
    %>
    </body>

  • 相关阅读:
    vue loading 插件编写与实战
    vue tab切换的几种方式
    IOS安卓常见问题
    vue.js 跨域的解决方法(转载)
    vue 根据设计稿rem适配
    vuex 文件夹目录整理
    vue项目优化之路由懒加载
    flutter 环境配置-01
    锚点 定位 导航 滑动
    居中 子元素无固定 宽高
  • 原文地址:https://www.cnblogs.com/ikuman/p/2239472.html
Copyright © 2020-2023  润新知