English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Пример кода реализации аутентификации пользователей в SpringMVC

Маленький пример登录а с использованием SpringMVC

Подготовка

  1. Создание динамического веб-проекта (я использую Eclipse)
  2. Добавление связанных jar-пакетов, создание пути компиляции
  3. 创建springMVC-servlet.xml,及完善web.xml
  4. 创建代码逻辑

目录结构如下

对于新手而言,有一个项目的完整的目录结构是多么幸福的一件事啊。

目录结构

个人建议:注意其中的springMVC-servlet.xml的位置。以及源代码包的名称。

代码实战

首先是大管家,web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  id="WebApp_ID" version="3.1">
  <display-name>SpringTest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>*.spring</url-pattern>
  </servlet-mapping>
</web-app>

затем是小管家springMVC-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
  <!-- Самая простая конфигурация, чтобы Spring сам искал -->
  <context:component-scan base-package="controller"></context:component-scan>
</beans>

Ещё один интерфейс входа, login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8";
  pageEncoding="UTF-8"%
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Интерфейс входа</title>
</head>
<body>
  <form action="login.spring" method="post">
    username:<input type="text" name="username"><br /> Password:<input
      type="password" name="password"><br /><input type="submit"
      value="Вход">
  </form>
</body>
</html>

login.jsp соответствующий action - это страница后台页面, которую нужно обрабатывать, то есть наш Login.Java:

package controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller // @Controller означает, что этот Java класс является контроллером
public class Login {
  /**
   * @RequestParam аннотация служит для: получения значения параметра из URL по имени
   * @param username
   *      Имя пользователя, должно точно соответствовать name в форме
   * @param password
   *      Пароль пользователя, также должен соответствовать элементу данных формы
   * @param model
   *      Объект области, который можно использовать для хранения значений данных
   * @return
   */
  @RequestMapping("/login") // @RequestMapping аннотация может использоваться для доступа к этому контроллеру по указанному URL-пътя
  public String login(@RequestParam("username") String username, @RequestParam("password") String password,
      Model model) {
    if (username.equals("admin") && password.equals("admin")) {
      model.addAttribute("username", username);
      return "ok.jsp";
    } else {
      model.addAttribute("username", username);
      return "no.jsp";
    }
  }
}

В конце идут файлы ok.jsp и no.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8";
  pageEncoding="UTF-8"%
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Вставьте заголовок здесь</title>
</head>
<body>
<font color="green">${username } </font>欢迎使用!
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8";
  pageEncoding="UTF-8"%
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Вставьте заголовок здесь</title>
</head>
<body>
  <font color="red">Извините</font>, пользователя с именем ${username } не существует!
  <br />
  <a href="login.jsp" rel="external nofollow" >Попробуйте еще раз!</a>
</body>
</html>

Тестирование

В вашем браузере введите http://localhost:8080/SpringTest/login.jsp

Затем можно приступить к тестированию кода. Я проверил и могу подтвердить, что это работает, поэтому изображения не будут включены.

Резюме

  1. Настройте DispatcherServlet ядро контроллера в web.xml
  2. Создайте файл конфигурации springMVC-servlet.xml в папке WEB-INF
  3. Использование @Controller, @RequestMapping, @RequestParam и Model объекта и т.д.
  4. Форма может быть отправлена с помощью метода POST или GET.

Ниже несколько хитростей по использованию аннотаций:

@Controller соответствует springMVC-servlet.xml

Спасибо за чтение, надеюсь, это поможет вам, спасибо за поддержку нашего сайта!

Основной учебник
Рекомендуется к просмотру