struts簡單入門2——使用者登陸

來源:互聯網
上載者:User

前一篇blog寫了關於struts2的簡單入門,為了更好的知道對應關係,跟著書寫一個簡單的使用者登陸的一個東東~~~

開發環境:tomcat7+MyEclipse10+struts2.3

首先準備要用的包:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1424403526-0.jpg" title="捕獲.JPG" alt="140547644.jpg" />

1)配置web.xml檔案通過項目右鍵MyEclipse的add struts capabilities方法也可以快速地產生)

<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></web-app>

2)登陸頁面login.jsp,註冊成功跳轉頁面registUsrWelcome.jsp和管理員成功登陸頁面adminWelcome.jsp

/anli/login.jsp

<!-- 如果是/test.action,會尋找根命名空間"/"中尋找名為test的action --><form action="usrLoginAction.action" method="post"><!--這裡是一個table,放使用者名稱,密碼,提交按鈕--></form>

/anli/registUsrWelcom.jsp和/anli/adminWelcome.jsp放不同的提示成功登入資訊~

Usr.java

private Integer id;private String username;private String password;//放它們的get和set方法


DBConn.java

    static Connection getConnection(){    Connection conn = null;    try{        Class.forName("com.mysql.jdbc.Driver");        String url = "jdbc:mysql://localhost:3306/anli";        String username="root";        String password="";        conn = DriverManager.getConnection(url, username, password);    }catch(ClassNotFoundException e){        System.out.println("==========驅動找不到===========");    }catch(SQLException e){        System.out.println("==========獲得資料庫連接失敗============");    }    return conn;}    //dbClose(Connection conn,Statement st,ResultSet rs)方法只要不為空白close

UsrDAO.java

public class UsrDAO {    private Connection conn;    private PreparedStatement ps;    private ResultSet rs;    /**     * 根據使用者名稱 密碼 查詢使用者 登陸方法     */    public Usr checkUsr(String username, String password){        Usr u = null;        String sql="select * from user u where u.username=? and u.password=?";        try{            conn = DBConn.getConnection();            ps = conn.prepareStatement(sql);            ps.setString(1, username);            ps.setString(2, password);            rs = ps.executeQuery();            while(rs.next()){                u = new Usr();                u.setId(rs.getInt("id"));                u.setUsername(rs.getString("username"));                u.setSuperuser(rs.getString("superuser"));            }        }catch(SQLException e){            e.printStackTrace();        }finally{            DBConn.dbClose(conn, ps, rs);        }        return u;    }}


UsrLoginAction.java

頁面展現使用者列表的處理結果集合:private ArrayList dataList;

主要的是execute()方法

    public String execute()throws Exception{    UsrDAO dao = new UsrDAO();    Usr u = dao.checkUsr(username, password);    if(u == null)return "anli_error";    else{//登陸成功,這裡開始判斷許可權 ,將使用者儲存到session        ActionContext.getContext().getSession().put("usr", u);        String superuser = u.getSuperuser();        if(superuser.equals("1"))//普通註冊使用者            return "anli_success_1";        else if(superuser.equals("2"))//分配了能看到某些藥品價格的使用者            return "anli_success_2";        else//admin因為第一次來此頁面,設定頁面數為1            return "anli_success_3";    }}


最後在struts.xml中配置Action

<struts><!-- struts2使用包來組織Action。 -->    <package name="struts2" extends="struts-default">    <!-- struts2的action名字就是它所處理的URL的前半部分。name屬性既是該Action的名字頁式它需要處理的URL的一部分,class指定實作類別 -->    <action name="login" class="com.ascent.struts2.action.LoginAction">    <result name="error">/error.jsp</result><!-- 配置邏輯視圖和物理視圖之間的一次映射 -->    <result name="sucess">/welcome.jsp</result>    </action>                                                                                                                                                                 <action name="usrLoginAction" class="com.ascent.action.UsrLoginAction">    <result name="anli_success_1">/anli/registUsrWelcome.jsp</result>    <result name="anli_success_2">/anli/registUsrWelcome.jsp</result>    <result name="anli_success_3">/anli/adminWelcome.jsp</result>    <result name="anli_error">/anli/login.jsp</result>    </action>                                                                                                                                                                 </package>  </struts>

===================================================

補充一下,結合c標籤庫的用法

查詢所有使用者

/anli/adminWelcome.jsp

<a href="findAllusrManagerAction.action">使用者管理</a>

UsrDAO.java

public List<Usr> findAllUsr(){    List<Usr>list = new ArrayList<Usr>();    Usr u = null;    String sql = "select * from user";    try{        conn = DBConn.getConnection();        ps = conn.prepareStatement(sql);        rs = ps.executeQuery();        while(rs.next()){            u = new Usr();            u.setId(rs.getInt("id"));            u.setUsername(rs.getString("username"));            u.setSuperuser(rs.getString("superuser"));            list.add(u);        }    }catch(SQLException e){        e.printStackTrace();    }finally{        DBConn.dbClose(conn, ps, rs);    }    return list;}

UsrManagerAction.java中查詢所有使用者findAll功能方法

public String findAll(){    UsrDAO dao = new UsrDAO();    //查詢所有使用者的方法,返回使用者集合    List<Usr> list = dao.findAllUsr();    //將使用者集合儲存在ActionContext    ActionContext.getContext().put("allUsr", list);    return "anli_showusr";}

struts.xml配置

<!-- 如果這裡寫錯了會配置不成功 --><action name="*usrManagerAction" class="com.ascent.action.UsrManagerAction" method="{1}">    <result name="anli_showusr">/anli/admin_showusr.jsp</result></action>

admin_showusr.jsp

<c:forEach items="${allUsr}" var="list">    <tr>    <td>${list.id}</td>    <td>${list.username}</td>    <td>        <c:if test="${list.superuser=='1'}">普通使用者</c:if>        <c:if test="${list.superuser=='2'}">進階使用者</c:if>        <c:if test="${list.superuser=='3'}">管理員</c:if>    </td>    </tr></c:forEach>

記得加上下面的,引入c標籤庫

<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %><%@ page isELIgnored="false" %>


再來分析一下struts.xml的配置和整個跳轉的關係:

首先admin進入adminWelcom.jsp後,可以點擊“使用者管理”,

然後跳轉到action="findAllusrManagerAction"

這時應該怎麼跳轉呢?通過尋找struts.xml的設定檔,這時發現*usrManagerAction可以將這個action抓取下來感覺這樣說。。。)這時action到了這步,找到對應的class進行載入,調用的method為"{1}",{1}對應*號的內容,也就是尋找這個class下對應的findAll方法。

findAll方法調用dao層和資料庫jdbc串連相關的層)的findAllUsr方法得到list。將這個list放到session中ActionSupport.put("allUsr",list)

這時返回anli_showusr,struts.xml設定檔尋找該Action的返回結果,頁面跳轉到/anli/admin_showusr.jsp.

^_^。。。大概就這樣吧~~~估計自己還得再複習幾次,不多複習幾次肯定又得忘了。。。

本文出自 “再累也要開心D” 部落格,請務必保留此出處http://zhangzhang.blog.51cto.com/6250085/1303070

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.