Struts 1基礎

來源:互聯網
上載者:User

標籤:style   class   blog   code   java   http   

Struts 1基礎

為什麼重拾Struts 1
 

曾經是最主流的MVC架構

市場份額依然很大


 很多遺留系統中依舊使用

維護和升級都需要熟悉Struts 1

與Struts 2相比

  編碼、配置繁瑣

  侵入性強

例子:使用Struts實現登入

登入失敗

返回登入頁面,提示失敗

登入成功

儲存當前登入使用者到Session

轉到成功頁面,顯示歡迎資訊

 開發步驟:

1、添加Struts到項目

  添加jar包和struts-config.xml

  在web.xml中配置ActionServlet

2、開發並配置ActionForm
3、開發並配置LoginAction
4、建立並編寫頁面
5、調試運行


建立web project項目:Struts1Demo
右擊項目添加struts1支援

配置struts-config.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"  "http://struts.apache.org/dtds/struts-config_1_3.dtd"><!-- 在/org/apache/struts/resources/struts-config_1_3.dtd 第24行  --><struts-config><!-- Form --><form-beans ><form-bean name="userLoginForm" type="com.demo.form.LoginForm"></form-bean></form-beans><!-- Action --><action-mappings ><action name="userLoginForm" path="/login" type="com.demo.action.LoginAction" scope="request"><forward name="success" path="/success.jsp"></forward><forward name="input" path="/index.jsp"></forward></action></action-mappings></struts-config>

 Web.xml


<servlet>    <servlet-name>action</servlet-name>    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>    <init-param>      <param-name>config</param-name>      <param-value>/WEB-INF/struts-config.xml</param-value>    </init-param>  </servlet>

2.開發並配置ActionForm

建立LoginAction extends Action在com.demo.action下重寫execute方法(execute+alt+/ 選擇第二個)

@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {//做登陸ActionForward af = null;LoginForm lf = (LoginForm) form;UserBiz userBiz = new UserBizImpl();if(userBiz.login(lf.getUsername(),lf.getPassword())){//登陸成功request.getSession().setAttribute("loginUser", lf.getUsername());//跳轉//mapping 是設定檔struts-config.xml的 action-mappingaf=mapping.findForward("success");}else{request.setAttribute("message", "使用者名稱密碼錯誤");af=mapping.findForward("input");}return af;}

建立UserBiz介面和它的實作類別UserBizImpl添加login方法:

public boolean login(String username, String password) {//直接用類比,不訪問資料庫if("admin".equals(username)&&"admin".equals(password)){return true;}elsereturn false;}

3、開發並配置LoginAction

建立類LoginForm extends ActionForm 在com.demo.form下
私人屬性username,password和getter,setter方法;
重寫reset方法(execute+alt+/ 選擇第二個)

@Overridepublic void reset(ActionMapping mapping, HttpServletRequest request) {//每次提交表單的時候都會調用一次this.username=null;this.password=null;}

4、建立並編寫頁面

Index.jsp


  <body>  <font color="red">${message }</font>  <form action="login.do" method="post">  <table>  <tr>  <td>使用者名稱</td>  <td><input name="username"/> </td>  </tr>  <tr>  <td>密碼:</td>  <td><input name="password" type="password"/> </td>  </tr>  <tr>  <td><input type="submit" value="登陸"/> </td>  <td><input value="重設" type="reset"/> </td>  </tr>  </table>  </form>  </body>

Success.jsp

  <body>    歡迎:${loginUser }登陸!  </body>

5、調試運行


Struts對MVC的實現


Struts核心組件 控制器組件

ActionServlet

1. 由Struts提供:org.apache.struts.action.ActionServlet

2. 本身是一個Servlet,需要在web.xml中配置

Action -- Action Bean

1. 封裝某一類客戶操作,如:登入、登出

2. 需要在struts-config.xml中配置

3. 繼承自org.apache.struts.action.Action,實現execute方法

4. execute方法的參數

mapping

form

request、response

5. execute方法的返回值類型:ActionForward

視圖組件

ActionForm -- Form Bean

1) 封裝頁面提交的資料

2) 繼承自org.apache.struts.action.ActionForm 

3) 需要在struts-config.xml中配置

4) 從頁面獲得輸入- 屬性與表單域name屬性值一致

loginForm.getUsername();

  loginForm.getPassword();

其他視圖組件:

JSP、JSTL、EL、自訂標籤
Struts標籤

模型組件
Struts對模型組件的實現沒有任何限制一般為:[User]Biz介面、[User]BizImpl類、[User]DAO介面、[User]DAOHibImpl類

Struts運行過程


使用Struts HTML標籤簡化開發 Index.jsp
<html:form action="login" method="post"><table><tr><td>使用者名稱</td><td><html:text property= "username" /></td></tr><tr><td>密碼:</td><td><html:password property= "password" /></td></tr><tr><td><html:submit value="登陸" /></td><td><html:reset value="重設" /></td></tr></table></html:form>

實現顯示使用者列表功能
日期格式:yyyy年mm月dd日
狀態:0 – 顯示為“禁用”, 1 – 顯示為“正常”

建立實體類User:
 四個屬性username,password,birthday,status 預設構造方法,帶參構造方法;

在LoginAction
登陸成功後設定UserList
List<User> userList = userBiz.getAllUser();request.setAttribute("userList", userList);
類比兩個User 在UserBizImpl
public List<User> getAllUser() {List<User> userList = new ArrayList<User>();userList.add(new User("admin", "admin", new Date(), 1));userList.add(new User("admin1", "admin1", new Date(), 0));return userList;}
在success.jsp
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %><%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %><%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
Body裡面:
<body>    歡迎:${loginUser }登陸!    <table border="1px" >    <thead>    <tr>    <th>使用者名稱</th>    <th>生日</th>    <th>狀態</th>    </tr>    </thead>        <tbody>    <!-- 結合name和property屬性尋找JavaBean -->     <logic:iterate id="u" name="userList">    <tr>     <td>     <!-- bean:write標籤用於輸出頁面輸出 -->    <bean:write name="u" property="username"/>    </td>    <td>    <bean:write name="u" property="birthday" format="yyyy-MM-dd"/>    </td>    <td>    <!-- <bean:write name="u" property="status" format="#,###"/> -->    <logic:equal value="1" name="u" property="status">正常</logic:equal>    <logic:equal value="0" name="u" property="status">禁用</logic:equal>    </td>    </tr>    </logic:iterate>    </tbody>    </table>  </body>

部署登陸;


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.