Struts2

Struts2

步骤:

  1. 创建 Gradle 项目
  2. 增加 jar 包支持:
    org.apache.struts:struts2-core:2.5.11
        
  3. 配置 web.xml,让struts 拦截并处理所有来自客户端的请求
    <filter>
      <filter-name>abc</filter-name>
      <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>abc</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>   
        
  4. classpath 下添加 struts.xml 文件,定义变量,定义包,定义 Action
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <!-- 开启开发模式,这样可以在 jsp 中使用 s:debug 查看变量 -->
        <constant name="struts.devMode" value="true" />
        <!--默认的扩展名为 .action,但是我们可以定制它-->
        <constant name="struts.action.extension" value="html" />
        
        <!-- 用 package 来划分各个模块,主要用来方便维护管理 -->
        <!-- 需要继承默认的 struts-default, 这是 struts 内置定义的一个 package, 里面预先定义了很多东西 -->
        <package name="default" namespace="/" extends="struts-default">
            <!--
              url: /emplist
              由哪个类 的哪个方法 去处理,
              如果请求成功,应该由哪个JSP去渲染页面
                  如果 result 不带 name,默认指的是 success
                  如果请求中有验证错误,默认返回名字为 input 的 result
            -->
            <action name="emplist" class="com.nf.empst.action.EmpAction" method="emplist">
                <result>/view/emplist.jsp</result>
                <result name="input">/view/emplist.jsp</result>
            </action>        
        </package>
    </struts>
        
  5. 实现 Action#emplist 方法, 用来响应 /emplist.action 的请求
    // *最好*要继承 ActionSupport,这个类定义了一些常用变量,并且简单实现了一些常用接口
    // 尤其它为数据验证和国际化提供了一些支持
    public class EmpAction extends ActionSupport {
        // 变量定义
        //   1. 可以用来接收来自请求中的 parameter
        //   2. 也可以用来保存用来在 JSP 页面渲染的数据
        private String name;
        private List<Emp> emps = new ArrayList<>();
    
        // 本类中所有 action 方法公有的验证方法
        // 如果在这个环节出错,那么相应 action 方法将不会执行
        public void validate() {
            if(name == null || name.isEmpty()) {
                addFieldError("name", "姓名出错!");  // 增加错误的方法。错误有 fieldError/actionError 等类型。
            }
        }
    
        // 格式为 validateXXX, 名字为 XXX 的 action 方法的独有验证方法
        public void validateEmplist() {
            // 继续增加其他验证
            // ...
            if(hasErrors()) {
                // 产生了某些验证错误,将不会继续执行 action 方法,而是转到 input 页面
            }
        }
    
        // action 方法,对应 ‘/emplist.action’ 请求
        public String emplist() {
            emps = new EmpDAO().getAll();
            return SUCCESS;
        }
    }
        
  6. 实现视图层(view),即实现页面渲染,即 jsp:
    <head>
      <!-- 用来提供一些内置的样式 -->
      <s:head />
    </head>
    
    <ul>
      <!-- 循环迭代显示数据 -->
      <s:iterator value="emps" var="e" status="s">
        <li>${s.index} / ${e.name} / ${e.salary}> </li>
      </s:iterator>
    </ul>
    
    <!-- 利用标签快速生成格式化的表单 -->
    <s:form action="empsave">
      <s:textfield name="ename" />
      <s:select name="deptno" list="depts" />
      <s:submit value="s" />
    </s:form>
    
    <footer>
      <!-- 用来显示可用数据 -->
      <s:debug />
    </footer>
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值