Rumah  >  Artikel  >  Tutorial sistem  >  Satu baris untuk memahami sebab dan akibat log masuk SSH

Satu baris untuk memahami sebab dan akibat log masuk SSH

WBOY
WBOYke hadapan
2024-04-29 09:10:09490semak imbas
Carta alir SSH

Mengikut carta alir, kami boleh melihat proses program kami dari pelayar awal hingga gema halaman akhir Jika ada apa-apa yang anda tidak faham, sila tinggalkan mesej.
一条线 理解SSH登录前因后果

Lapisan hibernate

Terutamanya bertanggungjawab untuk memetakan fail dan suntikan Tindakan dan Perkhidmatan, dan bertanggungjawab untuk memanggil antara tiga lapisan perkhidmatan latar belakang**

JSP

Ia adalah bersamaan dengan halaman html dalam asp.net kami Jika ia adalah sama dengan halaman html kami, maka ia juga boleh menulis ajax dan boleh mencetuskan peristiwa yang dicetuskan olehnya dicetuskan melalui atribut tindakan menjadi alamat dalam atribut ini, yang digunakan khusus untuk mewujudkan sambungan dengan bahagian belakang kami

<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>>
Konfigurasi topang

Mengikut konfigurasi Strust, kami boleh mencari kaedah yang kami ingin dapatkan Antara muka bahagian hadapan mencari kaedah yang disediakan oleh bahagian belakang Menurut name=login, User_* bermaksud semua alamat kami bermula dengan pengguna diletakkan dalam kelas userAction.

result bermaksud hasil yang dikembalikan Memandangkan kita boleh mencari kelas userAction, maka selepas melaksanakan satu siri fungsi seperti userAction, kita mesti mengembalikan hasilnya ke halaman depan saya. ? Semua orang telah menulis kod tiga lapisan Kami mahu latar belakang memberikan parameter kepada saya. Semuanya diberikan mengikut kaedah, bukan kelas Jadi kami mempunyai banyak kaedah dalam kelas userAction kami, dan hasil daripada kaedah name=login, kami boleh melompat ke laluan /WEB-INF/jsp/login.jsp

<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>>

Aksi
Aksi adalah lapisan tindakan kami Ini adalah nama yang saya berikan kepadanya. Kerana tempat pertama yang jsp pergi ke latar belakang selepas mencetuskan acara ialah Tindakan. Untuk melaksanakan kaedah yang sepadan, dia biasanya menggunakan ActionSupport dan memperkenalkan ModelDriven. Untuk menggunakan objek dipacu model, mereka sebenarnya adalah entiti kami Malah, Action boleh dianggap sebagai lapisan u antara tiga lapisan kami, dan kemudian perkhidmatan panggilan Action

.

Menurut Struts kami, kami boleh menemui kaedah log masuk kami yang disimpan dalam kelas userAction paparan

<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>;
      }   
  }

Perkhidmatan
Perkara utama yang perlu dilaksanakan ialah memanggil Dao Malah, peranan gandingan direalisasikan di sini, yang juga mengurangkan beban kerja Tindakan Menurut kod, ia dapat dilihat bahawa kaedah lapisan kegigihan dao dipanggil

<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
Ini ialah lapisan kegigihan Sebenarnya, ia digunakan untuk melaksanakan penyata pangkalan data, penambahan, pemadaman, pengubahsuaian dan pertanyaan Ia biasanya dilaksanakan menggunakan getHibernateTemplate.XX . Melihat kod, kita dapat melihat bahawa Laksanakan kaedah carian dan tukar nilai status kita, mengembalikan nama pengguna kita jika berjaya

 <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 ialah lapisan entiti Sebenarnya, ia adalah sama dengan pemetaan EF dalam MVC kami Sebenarnya, dalam vo kami mempunyai lapisan entiti dan xml
<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>

Ringkasan
Sepanjang beberapa hari pengajian ini, saya hampir menguasai satu talian ssh Jika anda mempunyai sebarang pertanyaan, anda boleh menghubungi saya pada bila-bila masa

Atas ialah kandungan terperinci Satu baris untuk memahami sebab dan akibat log masuk SSH. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam