zoukankan      html  css  js  c++  java
  • 初识Struts2

    一、Struts2入门案例

    ①引入jar包

    ②在src下创建struts.xml配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
    
        <!-- 修改文件 tomact不用重启 -->
        <constant name="struts.devMode" value="true" />
    
        <package name="default" namespace="/" extends="struts-default">
            <!-- 第一个action -->
            <action name="HelloWordAction" class="cn.happy.action.HelloWordAction">
                <result name="success">index.jsp</result>
            </action>
    
            </package>
    
    </struts>

    dtd约束条件查找路径:

    ③创建HelloWordAction类,实现Action接口,不仅定义了public String execute(),还提供了5个字符串类型的静态常量。如

    success、none、error、input、login

    public class HelloWordAction implements Action{
        
         private String name;
      public String execute() throws Exception {
            setName("Hello"+name);
            return "success";
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    

    ④配置文件web.xml。将全部请求定位到指定的Struts 2过滤器中

     

    index.jsp页面:

    并引用 taglib指令<%@taglib uri="/struts-tags" prefix="s" %>

    注:form表单的action属性名应该和struts.xml的action一致

    <div>
        <h1>
        <s:property value="name"/>
       
        </h1>
        </div>
        
        <div>
        <form action="HelloWordAction" method="post">
        请输入你的姓名:
        <input name="name" type="text"><br/><br/>
        <input type="submit" value="提交">
        
        </form>
        </div>
        

    实现效果:

     


    二、实现自动装配,将action类中的属性 包装到一个实体类User。然后在action类中定义私有属性User,进行封装。在index.jsp页面即可使用User对象点出其属性


    三、登录案例:

     实现效果:

     


    四、如何使页面上还是username,也能实现 自动装配呢?[模型驱动--ModelDriven]

    让Action实现一个ModelDriven<User>,其次手动实例化User对象,并实现该方法,返回user

     


    五、Struts2访问ServletAPI对象获取Session。

    分为两类:①解耦的访问方式 ②耦合的访问方式

    关键代码:

    1、耦合一。

    获取到session并返回一个HttpSession.以及session.setAttribute方法获取到username

       //耦合
    private HttpServletRequest request; HttpSession session2 = ServletActionContext.getRequest().getSession(); session2.setAttribute("uname", user.getUsername());

    2、耦合二。

    实现ServletRequestAware接口,并重写其方法,定义一个Request属性并进行封装

    request.getSession().setAttribute("uname", user.getUsername());
    

       

    3、解耦合一

     使用ActionContex类获取ServletAPI对象对应的Map对象

    private Map<String, Object> map;
    Map<String, Object> session = ActionContext.getContext().getSession(); session.put("uname",user.getUsername());

     

    4、解耦合二  注入[IOC思想]。实现SessionAware接口,获取到Map集合

    map.put("uname", user.getUsername());
    

     


    六、struts2常用表单标签

  • 相关阅读:
    2019 SDN第二次上机作业
    2019 SDN上机第1次作业
    第五次软工作业结对编程
    JIRA中的核心概念
    产品经理与项目经理的区别
    掀起你的盖头来:浅谈项目管理办公室(PMO)
    你大概走了假敏捷:认真说说敏捷的实现和问题(手绘版)
    项目管理经验
    项目经理面试中可能遇到的问题
    回到网易8个月测试团队转型实践
  • 原文地址:https://www.cnblogs.com/WJ-163/p/5906183.html
Copyright © 2011-2022 走看看