菜鳥學SSH(一)——Struts實現簡單登陸(附源碼)

從今天開始,一塊兒跟各位聊聊java的三大框架——SSH。先從Struts開始提及,Struts對MVC進行了很好的封裝,使用Struts的目的是爲了幫助咱們減小在運用MVC設計模型來開發Web應用的時間。若是咱們想混合使用Servlets和JSP的優勢來創建可擴展的應用,struts是一個不錯的選擇。今天經過一個簡單的例子來講說Struts。html


登陸頁面: java

這裏面沒啥東西,主要就是將action命名成「.do」的形式,讓Struts經過配置文件來執行相應操做。 web

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
    <form action="login.do" method="post">
        用戶:<input type="text" name="username"><br>
        密碼:<input type="password" name="password"></br>
        <input type="submit" value="登陸">
    </form>
</body>
</html>

 

PS:表單中的name值必須跟對應的actionform的get、set屬性一致。

apache

 

web.xml: app

它的做用就是告訴Struts它的配置文件(struts-config.xml)在哪,讓Struts能夠找到,還有執行的動做(.do),還有加載順序之類的。 框架

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
  
  <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>
    <load-on-startup>2</load-on-startup>
  </servlet>


  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>  
</web-app>

 



 

struts-config.xml: jsp

從名字上就能看出來,這是Struts的配置文件。form-bean用來接收提交的表單數據,action-mappings用來執行相應的動做。 ide

 

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
    <form-beans>
        <form-bean name="loginForm" type="com.lsj.struts.LoginActionForm"/>
    </form-beans>
    
    <action-mappings>
        <action path="/login" 
                type="com.lsj.struts.LoginAction"
                name="loginForm"        
                scope="request"        
                >
            <forward name="success" path="/login_success.jsp" />
            <forward name="error" path="/login_error.jsp"/>        
        </action>
    </action-mappings>
</struts-config>

 



 

這個類就是用來處理用戶登陸的業務邏輯 post

 

package com.lsj.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


public class LoginAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        LoginActionForm laf = (LoginActionForm)form;
        String username = laf.getUsername();
        String password = laf.getPassword();
        
        UserManager userManager = new UserManager();
        try {
            userManager.login(username, password);
            return mapping.findForward("success");
        }catch(UserNotFoundException e) {
            e.printStackTrace();
            request.setAttribute("msg", "用戶不能找到,用戶名稱=【" + username + "】");
        }catch(PasswordErrorException e) {
            e.printStackTrace();
            request.setAttribute("msg", "密碼錯誤");
        }
        return mapping.findForward("error");
    }

}

 


經過上面這個簡單的小實例,你們能夠清晰的看出,兩個配置文件起到了一個很好的串聯做用。也正是由於有配置文件,因此纔是程序變得很是的靈活。這個小例子比較簡單,配置文件承擔的責任不是不少,後面的東西會更多的用到配置文件,體會就會更加的深入了。最後爲你們附上源碼方便一塊兒研究討論。
ui

 



源代碼

相關文章
相關標籤/搜索