Heim >System-Tutorial >LINUX >Eine Zeile zum Verständnis der Ursachen und Folgen der SSH-Anmeldung

Eine Zeile zum Verständnis der Ursachen und Folgen der SSH-Anmeldung

WBOY
WBOYnach vorne
2024-04-29 09:10:09558Durchsuche
SSH-Flussdiagramm

Anhand des Flussdiagramms können wir den Prozess unseres Programms vom ersten Browser bis zum endgültigen Seitenecho verfolgen. Wenn Sie etwas nicht verstehen, hinterlassen Sie bitte eine Nachricht.
一条线 理解SSH登录前因后果

Winterschlafschicht

Hauptsächlich verantwortlich für die Zuordnung von Dateien und die Injektion von Aktionen und Diensten sowie für den Aufruf zwischen den drei Ebenen der Hintergrunddienste**

JSP

Es entspricht der HTML-Seite in unserem asp.net, dann kann es auch Ajax schreiben und die von ihm ausgelösten Ereignisse werden über das Aktionsattribut ausgelöst eine Adresse in diesem Attribut sein, die speziell zum Herstellen einer Verbindung mit unserem Backend verwendet wird

<form id=<span class="hljs-string">"loginForm"</span> action=<span class="hljs-string">"<span class="hljs-variable">${ pageContext.request.contextPath }</span>/user_login.action"</span>  method=<span class="hljs-string">"post"</span> novalidate=<span class="hljs-string">"novalidate"</span>>
Struts-Konfiguration

Entsprechend der Konfiguration von Strust können wir die Methode finden, die wir erhalten möchten. Die Front-End-Schnittstelle sucht nach der vom Back-End bereitgestellten Methode. Benutzer_* bedeutet, dass alle unsere Adressen mit Benutzer beginnen werden in der userAction-Klasse platziert.

result bedeutet das zurückgegebene Ergebnis. Nachdem wir eine Reihe von Funktionen wie userAction ausgeführt haben, müssen wir das Ergebnis an meine Startseite zurückgeben. Warum steht nach dem Ergebnis ein Namensattribut? ? Jeder hat 3-Ebenen-Code geschrieben. Wir möchten, dass der Hintergrund einen Parameter übergibt, der von der Methode bereitgestellt wird, nicht von der Klasse. Wir können nur sagen, dass die Klasse die Methode enthält Wir haben also viele Methoden in unserer userAction-Klasse und als Ergebnis der Methode name=login können wir zum Pfad /WEB-INF/jsp/login.jsp
springen

<action <span class="hljs-property">name</span>=<span class="hljs-string">"user_*"</span> <span class="hljs-type">class</span>=<span class="hljs-string">"userAction"</span> method=<span class="hljs-string">"{1}"</span>>
<<span class="hljs-constant">result</span> <span class="hljs-property">name</span>=<span class="hljs-string">"login"</span>>/WEB-INF/jsp/login.jsp</<span class="hljs-constant">result</span>>

Action
Action ist unsere Action-Ebene. Das ist der Name, den ich ihm gegeben habe. Denn der erste Ort, an dem JSP nach dem Auslösen eines Ereignisses in den Hintergrund tritt, ist die Aktion. Um die entsprechende Methode auszuführen, verwendet er normalerweise ActionSupport und führt ModelDriven ein. Um modellgesteuerte Objekte zu verwenden, handelt es sich tatsächlich um unsere Entitäten. Tatsächlich kann Aktion als die u-Schicht unter unseren drei Schichten angesehen werden, und dann ruft Aktion den Dienst auf

Laut unseren Struts können wir sehen, dass eine der Methoden in der userAction-Klasse gespeichert ist. Dadurch kehrt sie zum Ergebnisattribut in unseren Struts zurück und findet dann unsere JSP-Seite Anzeige

<span class="hljs-keyword">public</span> String <span class="hljs-title">login</span>(){
      User existUser = userService.login(user);
      <span class="hljs-comment">//      判断返回会来的数据是否为空</span>
      <span class="hljs-keyword">if</span>(existUser == <span class="hljs-keyword">null</span>){
          <span class="hljs-keyword">this</span>.addActionError(<span class="hljs-string">"登录失败:用户名或者密码或用户没有激活"</span>);
          <span class="hljs-keyword">return</span> LOGIN;
      }<span class="hljs-keyword">else</span>{
        <span class="hljs-comment">//保存到共享变量中  </span>
         ServletActionContext.getRequest().getSession().setAttribute(<span class="hljs-string">"existUser"</span>, existUser);
        <span class="hljs-comment">// 页面跳转</span>
         <span class="hljs-keyword">return</span> <span class="hljs-string">"loginSuccess"</span>;
      }   
  }

Service
Die Hauptsache ist, Dao aufzurufen. Tatsächlich wird hier die Rolle der Kopplung realisiert, was auch die Arbeitsbelastung von Action reduziert. Aus dem Code geht hervor, dass die Methode der Dao-Persistenzschicht einfach ist genannt
<span class="hljs-javadoc">/**
    *  登录功能
    */</span> 

    <span class="hljs-comment">//用户登录的方法</span>
    <span class="hljs-keyword">public</span> User <span class="hljs-title">login</span>(User user) {
        <span class="hljs-keyword">return</span> userDao.login(user);
}

Dao
Dies ist die Persistenzschicht, die tatsächlich zum Ausführen von Datenbankanweisungen, Ergänzungen, Löschungen, Änderungen und Abfragen verwendet wird. Sie wird im Allgemeinen mit getHibernateTemplate.XX implementiert. Der Implementierungsprozess besteht darin, die Anweisungen und Parameter für die Ausführung von MySQL zu übergeben Wenn wir uns den Code ansehen, können wir sehen, dass wir die Suchmethode implementieren und unseren Statuswert ändern. Bei Erfolg wird unser Benutzername zurückgegeben
 <span class="hljs-javadoc">/**
 *  登录功能
 */</span> 
   <span class="hljs-keyword">public</span>  User <span class="hljs-title">login</span>(User user) {
      String hql = <span class="hljs-string">"from User where username = ? and password = ? and state = ?"</span>;
      List<User> list = <span class="hljs-keyword">this</span>.getHibernateTemplate().find(hql,user.getUsername(),user.getPassword(),<span class="hljs-number">1</span>);
        <span class="hljs-keyword">if</span>(list != <span class="hljs-keyword">null</span> && list.size() > <span class="hljs-number">0</span>){
            <span class="hljs-keyword">return</span> list.get(<span class="hljs-number">0</span>);
        }
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
   }

Vo
vo ist die Entitätsebene, die mit der EF-Zuordnung in unserem MVC identisch ist. Tatsächlich haben wir in vo eine Entitätsebene und eine XML-Datei, um Entitäten abzubilden
<span class="hljs-tag"><<span class="hljs-title">hibernate-mapping</span>></span>--表示根元素,包含一些属性
 <span class="hljs-comment"><!-- 找到我们的包User,然后映射的表是user表 --></span>
    <span class="hljs-tag"><<span class="hljs-title">class</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"cn.itcast.shop.user.vo.User"</span> <span class="hljs-attribute">table</span>=<span class="hljs-value">"user"</span>></span>
   <span class="hljs-comment"><!--id主键,用native  --></span>
     <span class="hljs-tag"><<span class="hljs-title">id</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"uid"</span>></span>
         <span class="hljs-tag"><<span class="hljs-title">generator</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"native"</span>/></span>
     <span class="hljs-tag"></<span class="hljs-title">id</span>></span>
     <span class="hljs-comment"><!-- 字段属性进行映射,实体与数据库的字段要保持一直性,否则报错 --></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"username"</span>/></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"password"</span>/></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"name"</span>/></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"email"</span>/></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"phone"</span>/></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"addr"</span>/></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"state"</span>/></span>
     <span class="hljs-tag"><<span class="hljs-title">property</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"code"</span>/></span>
    <span class="hljs-tag"></<span class="hljs-title">class</span>></span>   
 <span class="hljs-tag"></<span class="hljs-title">hibernate-mapping</span>></span>

Zusammenfassung

In diesen wenigen Tagen des Lernens habe ich fast eine SSH-Zeile gemeistert. Wenn Sie Fragen haben, können Sie mich jederzeit kontaktieren

Das obige ist der detaillierte Inhalt vonEine Zeile zum Verständnis der Ursachen und Folgen der SSH-Anmeldung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen