2.1 Struts 2的应用
    2.1.1 使用步骤
        1、创建web项目,添加jar包,创建helloWorld.jsp页面
        2、创建HelloWorldAction类,用于对用户的请求作出处理
            public class HelloWorld implements Action {
                //用户输入的姓名
                private String name = "";
                //向用户显示的信息
                private String message = "";
                public String getName() {
                    return name;
                }
                public void setName(String name) {
                    this.name = name;
                }
                public String getMessage() {
                    return message;
                }
                public void setMessage(String message) {
                    this.message = message;
                }
                @Override
                public String execute() throws Exception {
                    this.setMessage("Hello,"+this.getName()+"!");
                    return "success";
                }
            }

        3、修改项目配置文件web.xml,将所有请求定位到指定当的Struts 2 过滤器中
              <filter>
                <filter-name>struts2</filter-name>
                <filter-class>
                    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
                </filter-class>
              </filter>
              <filter-mapping>
                <filter-name>struts2</filter-name>
                <url-pattern>/*</url-pattern>
              </filter-mapping>
        4、创建Struts 2配置文件
            Struts.xmll:
                <?xml version="1.0" encoding="UTF-8"?>
                <!DOCTYPE struts PUBLIC
                    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
                    "http://struts.apache.org/dtds/struts-2.1.dtd">
                <struts>
                    <constant name="struts.ui.theme" value="simple"></constant>
                    <package name="default" namespace="/" extends="struts-default">
                        <action name="helloWorld" class="cn.jbit.strutsdemo.HelloWorld">
                            <result name="success">helloWorld.jsp</result>
                        </action>
                        <action name="login" class="cn.jbit.strutsdemo.loginAction">
                            <result name="loginInfo">loginInfo.jsp</result>
                            <result name="login">login.jsp</result>
                            <result name="input">login.jsp</result>
                        </action>

                    </package>
                </struts>
        总结步骤:
            1、确认环境
                1、将Struts 2框架支持文件引入项目
                2、修改工程的web.xml文件,配置过滤器            
            2、代码编写
                1、编写开发处理求求的Action类,实现处理请求的方法,返回一个字符串类型的结果
                2、编写Struts.xml文件,对Action进行配置
                3、编写与Action相关的JSP页面
2.2 Struts 2访问servletAPI对象
    1、使用ActionContex类获取ServletPAI对应的Map对象
        request:ActionContext ac=ActionContext.getContext();
                 Map request=(Map)ac.get("request");
        session: ActionContext ac=ActionContext.getContext();
                 Map session=(Map)ac.get("session");
        application:ActionContext ac=ActionContext.getContext();
                 Map application=(Map)ac.get("application");      
    2、Struts 2 向Action注入ServletAPI对象对应的Map对象
        org.apache.struts2.interceptor.RequestAware:向Action实例注入HttpServletRequest对象对应的Map对象
            public void setRequest(Map<String,Object>request);
            
        org.apache.struts2.interceptor.SessionAware:向Action实例注入HttpSession对象对应的Map对象
            public void setSession(Map<String,Object>Session);
            
        org.apache.struts2.interceptor.ApplicationAware:向Action实例注入ServletContext对象对应的Map对象
            public void setApplication(Map<String,Object>Application);
    与Servlet API耦合的访问方式
        使用ServletActionContext类获取ServletAPI对象
        
            HttpServletRequest  =  public static HttpServletRequest getRequest();
                  
            ServletCOntext  =  public static ServletContext getServletContext();      
                  
            HttpServletResponse  =  public static HttpServletResponse getResponse();      
                  
            使用HttpServletRequest可以获得HttpSession对象
        除了使用ServletActionContext获取ServletAPI对象,还可以实现特定的接口实现注入Action实例注入ServletAPI对象
            ServletContext   :void setServletCOntext(ServletCOntext context);
            
            HttpServletRequest   :void serServletRequest(HttpServletRequest request);
            
            HttpServletResponse   :void setServletResponse(HttpServletResponse response);  
2.3 Struts 2数据校验
        通过继承ActionSupport类实现数据验证机制
        例:    public void validate(){
                    if(this.getUsername().length()==0||"".equals(this.getUsername())){
                        addFieldError("name", "用户名不能为空");
                    }
                    if(this.getPassword().length()==0||"".equals(this.getPassword())){
                        addFieldError("pwd", "密码不能为空");
                    }
                }
2.4 Struts 2标签
    UI标签
        表单标签:
            <s:form></s:form>:获取相应form的值
            <s:textfied></s:textfied>:文本输入框
            <s:password></password>:密码输入框
            <s:textarea></textarea>:文本域输入框
            <s:radio></s:radio>:单选按钮
            <s:checkbox></s:checkbox>:复选框
            <s:submit/>:提交标签
            <s:reset/>:重置标签
            <s:hidden/>:隐藏域标签
            例:<s:form action="login.action">
                    <div>用户名:<s:textfield name="username"/></div>
                    <div>密码:<s:password name="password"/><br></div>
                    <div><s:submit value="提交"/></div>
                </s:form>
                <font color="red"><s:property value="text"/><s:fielderror/></font>
                
        非表单标签
        Ajax标签
    通用标签
          条件标签:
          <s:if>
            需执行的代码
          </s:if>
          <s:elseif>
            需执行的代码
          </s:elseif>
          <s:else>
            需执行的代码
          </s:else>
          迭代标签:<s:iterator value="集合对象" status="status" id="name">
                        读取集合对象并输出显示
                    </s:iterator>

第二章 Struts 2的应用的更多相关文章

  1. 《精通Spring4.x企业应用开发实战》第二章

    昨天联系了一下学长,学长说这个项目因为种种原因代码比较混乱,感觉最坏的打算是从头开始写. 大概询问了一下学长和xianhua学姐的建议,又看了看网上的资料,这个项目开发的技术栈基本就是SpringBo ...

  2. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  3. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  4. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  5. Python黑帽编程 2.0 第二章概述

    Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...

  6. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  7. Asp.Net MVC4 + Oracle + EasyUI 学习 第二章

    Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...

  8. 数据结构与算法分析C++表述第二章编程题

    把昨天看的第二章巩固一下,做一做编程习题. 2.6: 第一天交2元罚金,以后每一天都是前一天的平方,第N天罚金将是多少? 这个题目和2.4.4-3介绍的幂运算基本一致.若按相同的递归思路分析,比那个问 ...

  9. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

随机推荐

  1. 使用咪咕云做C站视频直链源

    首先我们先百度搜索一下“咪咕云” 点击进入-->用户注册或登录 注册时选择个人用户-->前往邮箱激活-->进入邮箱激活成功后重新登录 登录后在控制台选择“云点播” 即可进行上传视频了 ...

  2. selenium7种元素识别

    我们以百度主页搜索框为例:= <input autocomplete="off" maxlength="255" value="" c ...

  3. StringBuffer与StringBuilder的区别,及实现原理

    区别 1.StringBuffer 与 StringBuilder 中的方法和功能完全是等价的, 2.只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是 ...

  4. Java 字符流操作

    上篇文章Java 字节流操作介绍了java中基本的字节流操作,但是我们常常对于字符操作,如果使用字节流来实现输入输出就显得麻烦,我们可以使用字符流来实现对我们看得见的字符char进行操作,主要内容如下 ...

  5. Altera Stratix IV Overview

    由于要开发基于DE4平台的应用,应该要了解一下该平台的芯片情况Stratix IV 具体型号为:Stratix IV EP4SGX230KF40C2 命名规范如下 官网资料为:https://www. ...

  6. 解决 Linux error while loading shared libraries: cannot open shared object file: No such file or directory

    安装最新版本Emqtt,参照官方文档安装后,执行报错: Linux error while loading shared libraries libsctp.so.1: cannot open sha ...

  7. 用javascript动态改变网页文字大小

    <script>function setFontSize(size){document.getElementById('bottom').style.fontsize=size+'pt'; ...

  8. MVC不用302跳转Action,内部跳转

    原理,在一个Action里面return 另一个Action出去. public class HomeController : Controller { // GET: Home public Act ...

  9. [译]Selenium Python文档:六、页面对象

    本章是介绍页面对象设计模式的教程.一个页面对象代表了web应用用户接口的一片区域,你的测试代码将与之交互的. 使用页面对象模式的好处: 可以创建在多个测试样例中都可使用的可重用代码 减少重复性代码 如 ...

  10. lvm的vg扩容

    本次扩容的目的是要扩展 / 的整体容量,具体操作如下: 1.首先查看是否存在未分配的磁盘 [root@NH-Test-44 ~]# fdisk -l Disk /dev/vda: 53.7 GB, 5 ...