search
HomeSystem TutorialLINUXOne line to understand the causes and consequences of SSH login

One line to understand the causes and consequences of SSH login

Apr 29, 2024 am 09:10 AM
mysqllinuxlinux tutorialRed Hatlinux systemlinux commandlinux certificationred hat linuxlinux video

SSH flow chart

According to the flow chart, we can see the process of our program from the initial browser to the final page echo. If there is anything you don’t understand, please leave a message.
一条线 理解SSH登录前因后果

Hibernate layer

Mainly responsible for mapping files and injection of Action and Service, and responsible for calling between the three layers of background services**

JSP

It is equivalent to the html page in our asp.net. If it is similar to our html page, then it can also write ajax and can trigger our events. The event is triggered through the action attribute. Triggered, there will be an address in this attribute, which is specifically used to establish a connection with our backend

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

According to the configuration of Strust, we can find the method we want to get. The front-end interface looks for the method provided by the back-end. According to name=login, User_* means that all our addresses starting with user are placed in the userAction class.

result means the returned result. Since we can find the userAction class, then after executing a series of functions such as userAction, we must return the result to my front page. Why is there a name attribute after the result? ? ? Everyone has written three-layer code. We want the background to pass me a parameter, which is given by the method, not the class. We can only say that the class contains the method
So we have many methods in our userAction class, and the method result of name=login can jump to the path of /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>>
Action

Action is our action layer. This is the name I gave him. Why do I say that? Because the first place that jsp goes to the background after triggering an event is Action. To execute the corresponding method, he usually uses ActionSupport and introduces ModelDriven. To use model-driven objects, they are actually our entities. In fact, Action can be regarded as the u layer among our three layers, and then Action calls service

According to our Struts, we can find our login method stored in the userAction class. One of the methods can be seen as return. It is through this that it returns to the result attribute in our Struts, and then finds us. The jsp page displays

<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

The main thing to be implemented is to call Dao. In fact, the role of coupling is realized here, which also reduces the workload of Action. According to the code, it can be seen that the method of the dao persistence layer is simply called.

<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

This is the persistence layer. In fact, it is used to perform database statements, additions, deletions, modifications, and queries. It is generally implemented using getHibernateTemplate.XX. The implementation process is to pass in the statements and parameters for executing mysql. See the code. Execute the search method we implemented, and change our status value. If successful, return our username

 <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 is the entity layer. In fact, it is the same as the EF mapping in our MVC. In fact, in vo we have an entity layer and an xml. We use xml to map entities

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

After these few days of study, I have almost mastered one line of ssh. If you have any questions, you can contact me at any time

The above is the detailed content of One line to understand the causes and consequences of SSH login. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:Linux就该这么学. If there is any infringement, please contact admin@php.cn delete
Explain the architectural differences between Linux and Windows.Explain the architectural differences between Linux and Windows.May 06, 2025 am 12:01 AM

The main differences in architecture between Linux and Windows include: 1) Design philosophy and kernel structure: Linux uses a modular kernel, Windows uses a single kernel; 2) File system: Linux supports multiple file systems, Windows mainly uses NTFS; 3) Security: Linux is known for its permission management and open source features. Windows has a unique security mechanism but lags in repair; 4) Usage experience: Linux command line operation is more efficient, and Windows graphical interface is more intuitive.

What are some common security threats targeting Linux versus Windows?What are some common security threats targeting Linux versus Windows?May 05, 2025 am 12:03 AM

Linux and Windows systems face different security threats. Common Linux threats include Rootkit, DDoS attacks, exploits, and permission escalation; common Windows threats include malware, ransomware, phishing attacks, and zero-day attacks.

How does process management differ between Linux and Windows?How does process management differ between Linux and Windows?May 04, 2025 am 12:04 AM

The main difference between Linux and Windows in process management lies in the implementation and concept of tools and APIs. Linux is known for its flexibility and power, relying on kernel and command line tools; while Windows is known for its user-friendliness and integration, mainly managing processes through graphical interfaces and system services.

What are the typical use cases for Linux versus Windows?What are the typical use cases for Linux versus Windows?May 03, 2025 am 12:01 AM

Linuxisidealforcustomization,development,andservermanagement,whileWindowsexcelsineaseofuse,softwarecompatibility,andgaming.Linuxoffershighconfigurabilityfordevelopersandserversetups,whereasWindowsprovidesauser-friendlyinterfaceandbroadsoftwaresupport

What are the differences in user account management between Linux and Windows?What are the differences in user account management between Linux and Windows?May 02, 2025 am 12:02 AM

The main difference between Linux and Windows in user account management is the permission model and management tools. Linux uses Unix-based permissions models and command-line tools (such as useradd, usermod, userdel), while Windows uses its own security model and graphical user interface (GUI) management tools.

How does the command line environment of Linux make it more/less secure than Windows?How does the command line environment of Linux make it more/less secure than Windows?May 01, 2025 am 12:03 AM

Linux'scommandlinecanbemoresecurethanWindowsifmanagedcorrectly,butrequiresmoreuserknowledge.1)Linux'sopen-sourcenatureallowsforquicksecurityupdates.2)Misconfigurationcanleadtovulnerabilities.Windows'commandlineismorecontrolledbutlesscustomizable,with

How to Make a USB Drive Mount Automatically in LinuxHow to Make a USB Drive Mount Automatically in LinuxApr 30, 2025 am 10:04 AM

This guide explains how to automatically mount a USB drive on boot in Linux, saving you time and effort. Step 1: Identify Your USB Drive Use the lsblk command to list all block devices. Your USB drive will likely be labeled /dev/sdb1, /dev/sdc1, etc

Best Cross-Platform Apps for Linux, Windows, and Mac in 2025Best Cross-Platform Apps for Linux, Windows, and Mac in 2025Apr 30, 2025 am 09:57 AM

Cross-platform applications have revolutionized software development, enabling seamless functionality across operating systems like Linux, Windows, and macOS. This eliminates the need to switch apps based on your device, offering consistent experien

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software