springmvc入門登入功能

尤所不同發表於2024-03-13

學習springmvc的時候的一個入門功能,登入功能。配置好web框架,匯入需要springjar包和springmvc需要的兩個jar包,就可以編碼了,首先寫了登入需要的jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="login">
  郵箱:<input type="text" name="email"><br>
  密碼:<input type="password" name="password"><br>
  <input type="submit" value="登入">
</form>
</body>
</html>

和登入成功的頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login_ok</title>
</head>
<body>
login_ok
</body>
</html>

還需要建立一個spring的xml applicationContent-mvc.xml,因為要透過註釋的方式使一個普通的java類變成一個Handler處理器,所以要在這個xml配置掃描包。這裡我遇到的問題就是idea自動提示的掃描包的配置檔案的頭部宣告。結果不對,就執行失敗了。

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
">
<context:component-scan base-package="com.ysbt.web"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
<!--    配置前端控制器、中央控制器、分發控制器,使用者的請求都會經過它的處理-->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        配置屬性contextConfigLocation,指定DispatcherServlet去操作的spring配置檔案-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContent-mvc.xml</param-value>
        </init-param>
<!--        專案啟動時自動載入DispatcherServlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

處理器,透過包掃描@Controller把這個類當做處理器。login方法返回的值要與返回到的頁面名稱一致。

package com.ysbt.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserServlet {
    @RequestMapping(value = "login")//@RequestMapping("login")同理
    public String login(){
        return "login_ok";
    }
}

image

畫一下springmvc的執行流程圖

image

注意

若沒有在DispatcherServlet中指定applicationContext-mvc.xml。則預設會去/WEB-INF/springDispatcherServlet-servlet.xml找配置檔案。(web.xml配置裡DispatcherServlet的servlet-name加上-servlet)
DispatcherServlet父類FrameworkServlet中屬性
public static final String DEFAULT_NAMESPACE_SUFFIX = "-servlet";的註釋如下

Suffix for WebApplicationContext namespaces. If a servlet of this class is given the name "test" in a context, the namespace used by the servlet will resolve to "test-servlet".

相關文章