學習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";
}
}
畫一下springmvc的執行流程圖
注意
若沒有在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".