久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JSP Servlet JavaBean

 小五q0jf8xj2hu 2017-12-12

MVC是三個單詞的縮寫:M,Model(模型),;V,View( 視圖 ),,C,,Control(控制),。

MVC模式的目的就是實現(xiàn)Web系統(tǒng)的職能分工,,

Model層:實現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯,,即javaBean部分

View層:負責(zé)與用戶交互,,即在界面上展示數(shù)據(jù)對象給用戶,即html,,jsp

Control層:Model與View之間溝通的橋梁,,它可以分派用戶的請求并選擇恰當?shù)囊晥D以用于顯示,,同時它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作,當然就是Servlet的職責(zé)了

 

下面我們用MVC設(shè)計模式來實現(xiàn) 簡單的用戶登錄過程

1,、控制器Servlet的實現(xiàn)

系統(tǒng)中只有一個servlet即ControlServlet,所有頁面發(fā)起的以'  *.do  '的請求,,都被web.xml配置給ControlServlet進行處理,在ControlServlet中根據(jù)‘ * ’的字符串(即解析用戶請求的路徑),,調(diào)用ActionFactory生成的制定Action對象,,在將處理后的URL轉(zhuǎn)發(fā)給用戶。

 ControlServlet.java

Java代碼 
  1. package cn.netjava.servlet;   
  2.   
  3. import java.io.IOException;   
  4. import javax.servlet.ServletException;   
  5. import javax.servlet.http.HttpServlet;   
  6. import javax.servlet.http.HttpServletRequest;   
  7. import javax.servlet.http.HttpServletResponse;   
  8.   
  9. import cn.netjava.action.Action;   
  10. import cn.netjava.action.ActionFactory;   
  11.   
  12. /**  
  13.  * Servlet implementation class ControlServlet  
  14.  */  
  15. public class ControlServlet extends HttpServlet {   
  16.     private static final long serialVersionUID = 1L;   
  17.   
  18.     protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   
  19.         //得到當前Servlet的請求路徑   
  20.         String pathName =request.getServletPath();   
  21.         // request.getContextPath();得到項目名字   
  22.         System.out.println('pathName:'+pathName);   
  23.         //得到請求的Action名字   
  24.         int index = pathName.indexOf('.');   
  25.         String ActionName = pathName.substring(1, index);   
  26.         System.out.println(ActionName);   
  27.         //獲取運行時參數(shù)   
  28.         String ActionClassName = this.getInitParameter(ActionName);   
  29.         //得到Action對象   
  30.         Action action = ActionFactory.getActionFactory().getAction(ActionClassName);   
  31.         //執(zhí)行Action的execute得到要返回的URL路徑   
  32.         String url = action.execute(request, response);   
  33.         if(url==null){   
  34.             request.getRequestDispatcher('error.jsp').forward(request, response);      
  35.         }else{   
  36.             request.getRequestDispatcher(url).forward(request, response);   
  37.         }   
  38.     }   
  39.   
  40. }   

 

2,、Action對象工廠類實現(xiàn):

 

ActionFactory是一個單實例類(整個系統(tǒng)只需要使用其一個對象),,它只提供一個Action對象,通過getAction(String ActionClassName) 的方法調(diào)用創(chuàng)建一個Action對象,。這個方法在Control中被調(diào)用,。代碼如下:   

 

Java代碼 
  1. package cn.netjava.action;   
  2. /**  
  3.  * 根據(jù)Action名字,創(chuàng)建Action對象  
  4.  * @author Administrator  
  5.  *  
  6.  */  
  7. public class ActionFactory {   
  8.   
  9.     //單例模式:不需要創(chuàng)建對象   
  10.     private ActionFactory(){   
  11.     }   
  12.     //單實例訪問方法,,得到ActionFactory對象   
  13.     public static ActionFactory getActionFactory(){   
  14.         if(af == null){   
  15.             af = new ActionFactory();   
  16.         }   
  17.         return af;   
  18.     }   
  19.     /**  
  20.      * 根據(jù)具體的Action類名字創(chuàng)建Action對象  
  21.      * @param ActionClassName :具體的Action類全名  
  22.      * @return:Action類型對象  
  23.      */  
  24.     public Action getAction(String ActionClassName){   
  25.         Action action = null;   
  26.         try{   
  27.             action = (Action) Class.forName(ActionClassName).newInstance();   
  28.         }catch(Exception e){   
  29.             e.printStackTrace();   
  30.         }   
  31.         return action;   
  32.     }   
  33.        
  34.     private static ActionFactory af;   
  35.        
  36.        
  37. }  
 

3,、Action接口類定義:

所有的事件處理(即Action)類都必須實現(xiàn)這個接口

Java代碼 
  1. package cn.netjava.action;   
  2.   
  3. public interface Action {   
  4.     /**  
  5.      * 所有的具體Action實現(xiàn)這個接口  
  6.      * @param request 請求對象  
  7.      * @param response 應(yīng)答對象  
  8.      * @return :結(jié)果頁面  
  9.      */  
  10.     public String execute(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response);   
  11.        
  12. }  
 

 4、web.xml中配置請求發(fā)送給控制器Servlet

 

最后,,我們只需要在wex.xml中對MVC結(jié)構(gòu)的配置:

視圖頁面中的請求都是以<動作名字>.do結(jié)尾,,當這個請求到達web服務(wù)器后,會被服務(wù)器轉(zhuǎn)向給控制器處理,,控制器在根據(jù)解析出的動作名,,調(diào)用對應(yīng)的Action對象,處理結(jié)果,,并輸出結(jié)果頁面,,所以web.xml中必須有如下配置:

Java代碼 
  1.   
  2.     controlServlet   
  3.     class>cn.netjava.servlet.ControlServletclass>   
  4.        
  5.         loginAction   
  6.         cn.netjava.action.LoginAction   
  7.        
  8.      
  9.      
  10.     controlServlet   
  11.     *.do   
  12.     
 

 4、具體的Action類實現(xiàn)(即對登錄動作進行處理的類)

 

Java代碼 
  1. package cn.netjava.action;   
  2.   
  3. import javax.servlet.http.HttpServletRequest;   
  4. import javax.servlet.http.HttpServletResponse;   
  5.   
  6. public class LoginAction implements Action {   
  7.   
  8.     public String execute(HttpServletRequest request,   
  9.             HttpServletResponse response) {   
  10.         // 得到用戶名和密碼   
  11.         String userName = request.getParameter('userName');   
  12.         String userPwd = request.getParameter('userPwd');   
  13.         if (userName.equals('netjava') && userPwd.equals('netjava')) {   
  14.             request.setAttribute('userName', userName);   
  15.             return 'main.jsp';   
  16.         } else {   
  17.             return 'login.jsp';   
  18.         }   
  19.     }   
  20.   
  21. }  
 

 如果登錄成功,,跳轉(zhuǎn)到 main.jsp頁面,,否則,返回login,jsp頁面

 

以下是main.jsp和login.jsp頁面:

main.jsp

Html代碼 
  1. <%@ page language='java' contentType='text/html; charset=utf-8'  
  2.     pageEncoding='utf-8'%>  
  3. >  
  4. <html>  
  5. <head>  
  6. <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>  
  7. <title>Insert title heretitle>  
  8. head>  
  9. <body>  
  10. <h1 style='color:red'><%=request.getAttribute('userName') %>登錄成功h1>  
  11. body>  
  12. html>  
 

 login.jsp

Html代碼 
  1. <%@ page language='java' contentType='text/html; charset=utf-8'  
  2.     pageEncoding='utf-8'%>  
  3. >  
  4. <html>  
  5. <head>  
  6. <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>  
  7. <title>用戶登錄title>  
  8. head>  
  9. <body>  
  10. <form action='loginAction.do' method='post'>  
  11.     用戶名:<input type='text' name='userName' id='userName'><br>  
  12.     密碼:<input type='password' name='userPwd' id='userPwd'><br>  
  13.     <input type='submit' value='登錄'/>  
  14. form>  
  15. body>  
  16. html>  
 

 最后做個總結(jié)吧:以前我們與服務(wù)器進行交互,,可能jsp頁面和servlet中都將html和java代碼參雜在一起,,這會導(dǎo)致系統(tǒng)的系統(tǒng)維護困難、分工不清,;例如在加有jsp代碼段的網(wǎng)頁中,,程序員與美工之間的配合就非常困難!MVC結(jié)構(gòu)的系統(tǒng)會從根本上強制我們將web系統(tǒng)中的數(shù)據(jù)對象,、業(yè)務(wù)邏輯,、用戶界面三者分離,使得程序員(Java開發(fā)人員)集中精力于業(yè)務(wù)邏輯,,界面程序員(HTML和JSP開發(fā)人員)集中精力于表現(xiàn)形式上,。

出處:http://blog.csdn.net/liupeng900605/article/details/6985344

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多