文章出處

一、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常用表單標簽

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()