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

    1
    2
    3
    //耦合<br>   private HttpServletRequest request;
    HttpSession session2 = ServletActionContext.getRequest().getSession();
    session2.setAttribute("uname", user.getUsername());

    2、耦合二。

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

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

       

    3、解耦合一

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

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

     

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

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

     


    六、struts2常用表单标签

  • 相关阅读:
    Java数据库小项目02--管家婆项目
    Java数据库小项目01--实现用户登录注册
    Java数据库小项目00---基础知识
    MySQL基础练习02---牛客网
    ICMP
    语法糖
    双绞线
    telnet 时代的 bbs
    ARPA
    IEEE802是一个局域网标准系列
  • 原文地址:https://www.cnblogs.com/hr1997/p/5906217.html
Copyright © 2011-2022 走看看