1. 程式人生 > >註解驅動的springMVC與引數繫結

註解驅動的springMVC與引數繫結

最近一直在學習spring MVC。真的很靈活,這次主要做個前臺傳入資料到控制器並呼叫服務層來完成資料驗證工作並跳轉頁面。

  • 工程目錄結構

這裡寫圖片描述

這次由於沒有連線資料庫,所以沒有設定dao層。直接在service裡面做了驗證處理。
需求是從前臺傳入username和password兩個引數到後臺驗證過完成頁面跳轉。
首先配置web容器的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<!-- 配置spring servlet --> <servlet> <servlet-name>spring</servlet-name> <servlet-class
>
org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:springMVC.xml</param-value> </init-param> <load-on-startup
>
1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>welcome.jsp</welcome-file> </welcome-file-list> </web-app>

然後配置springMVC的servlet。這個必須放在根包下面,之前放到包下面,總是無法起作用。
springMVC.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-2.5.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    <!-- 控制器包掃描 -->
    <context:component-scan base-package="controller"></context:component-scan>
    <!-- 檢視層解析 -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>

然後我們需要寫控制器,完成頁面跳轉與資料儲存和業務呼叫:
@RequestParam(“username”)為前端的username引數放到name物件上。password同理,十分的優雅。

@Controller
@RequestMapping("/login")
public class LoginAction {
    @RequestMapping("/check")
    public ModelAndView checkLogin(@RequestParam("username") String name,@RequestParam("password") String password)
    {
        if(CheckUser.CheckUser(name, password)) return new ModelAndView("success","loginUser","hello micro");
        return new ModelAndView("error","loginName","you are not allowed into system!");
    }
}

呼叫的CheckUser靜態構造方法為:

public class CheckUser {
    /*
     * 模擬dao完成驗證
     */
    public static boolean CheckUser(String username,String password)
    {
        if(username.equals("micro") && password.equals("123")) return true;
        return false;

    }
}

完成業務層的處理。

然後來寫welcome.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>welcome page</title>
</head>
<body>
    <h1>歡迎</h1>
    <form action="login/check" method="post">
        username:<input type="text" name="username" value="micro" /> 
        password:<input type="text" name="password" value="123" />
        <input type = "submit"  value = "提交">
    </form>
</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>success page</title>
</head>
<body>
<h1>this is a success page</h1>
${loginUser}
</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>error page</title>
</head>
<body>
<h1>this is a error page</h1>
${loginName}
</body>
</html>

這裡寫圖片描述
提交就會請求loginAction,然後呼叫CheckUser完成業務處理 頁面跳轉和資料儲存。
登入成功跳轉:
這裡寫圖片描述
驗證失敗跳轉:
這裡寫圖片描述

相關推薦

註解驅動springMVC引數

最近一直在學習spring MVC。真的很靈活,這次主要做個前臺傳入資料到控制器並呼叫服務層來完成資料驗證工作並跳轉頁面。 工程目錄結構 這次由於沒有連線資料庫,所以沒有設定dao層。直接在service裡面做了驗證處理。 需求是從前臺傳入user

二、Springmvc+Mybatis 引數之預設引數 簡單型別 POJO POST亂碼問題

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/

Springmvc引數

spring引數繫結過程 概念:從客戶端請求key/value資料,經過引數繫結,將key/value資料繫結到controller方法形參上。 springmvc中,接受頁面提交的資料是通過方法形參來接收,而不是在controller類定義成員變數來接收 第一步:

SpringMVC請求引數(用法)

目錄 1.把請求資料封裝到JavaBean類中 (1)自定義一個JavaBean類 package com.heima.domain; import java.io.Serializ

什麼是springMvc引數

  引數繫結通俗來講就是從頁面傳過來的資料通過SpringMvc進行接收。接收的資料型別可以有:   (1)SpringMvc預設支援的型別:request、session、application等。   (2)簡單資料型別:String、Integer等。   (3)pojo型別。   (4)poj

SpringMVC引數——日期型別

- 前言 讀完本文將會學到以下內容: 日期型別的引數繫結 學習本文需要安裝的軟體: JDK1.8 、IDEA2017.3、Maven3.3.3、Tomcat7.0.64 - 日

SpringMVC引數——複合POJO

- 前言 讀完本文將會學到以下內容: 複合POJO的引數繫結 學習本文需要安裝的軟體: JDK1.8 、IDEA2017.3、Maven3.3.3、Tomcat7.0.64 -

SpringMVC學習(五)——SpringMVC引數

SpringMVC中的引數繫結還是蠻重要的,所以單獨開一篇文章來講解。本文所有案例程式碼的編寫均建立在前文的案例基礎之上,因此希望讀者能仔細閱讀這篇文章。 預設支援的資料型別 現在有這樣一個需求:開啟商品編輯頁面,展示商品資訊。這是我對這個需求的分析:編輯商

springmvc引數(一)

引數繫結過程之基礎篇 客戶端請求的key/value資料經過引數繫結繫結到controller方法的形參上。 spring提供很多converter(轉換器),特殊情況下需要自定義converter 預設支援的型別 request response se

SpringMVC 請求引數

什麼是請求引數繫結 請求引數格式   預設是key/value格式,比如:http:xxxx?id=1&type=2 請求引數值的資料型別   都是字串型別的各種值 請求引數值要繫結的目標型別   Controller類中的方法引數,比如簡單型別、POJO型別、集合型別等。 SpringMVC內建的引

SpringMVC入門丶請求引數丶常用註解

SpringMVC入門 建立WEB工程,引入依賴 <!-- 版本鎖定 --> <properties> <spring.version>5.0.2.RELEASE</spring.version> </properties> &

SpringMVC中的引數註解詳解及其使用場景

我認為只有深刻地研究過人,才能創造出人物,如同只有認真地學習了一種語言才能講它一樣。——《茶花女》 0、引言 最近在寫一個介面的時候,採用put請求,接收引數時採用了兩個@requestparam接收。前端通過application/json傳來兩個引數,測

SpringMVC引數註解

以下文章轉自“開濤的部落格”在SpringMVC 的控制器中提供了很多請求資料繫結的註解,以及功能處理方法支援的引數型別:請求引數繫結註解:@RequestParam繫結單個請求引數值;@PathVariable繫結URI模板變數值;@CookieValue繫結Cookie資

springmvc 引數註解詳解

簡介   Handler method引數繫結常用的註解,我們根據它們處理request的不同內容部分來看主要分為四類:   A. 處理requesr uri部分的註解,@PathVariable   B. 處理 request header部分的註解,@RequestH

springmvc(十六)springmvc註解開發-springmvc引數-map

也通過在包裝pojo中定義map型別屬性。 在包裝類中定義Map物件,並新增get/set方法,action使用包裝物件接收。 包裝類中定義Map物件如下: Public class QueryVo

SpringMVC常用註解引數(02)

一、SpringMVC常用註解:(1)、@Controller:如果不加該註解說明只是一個普通的bean,作用在類上面才宣告該類是一個控制器。(2)、@RequestMapping        如果作用在類上面:可以起到窄化請求對映的作用;        如果作用在方法上面

mybatis傳多個引數(不使用@param註解情況下),3.4.2版本之後出現#{0}-#{n}引數異常

解決方案:        在mybatis配置檔案中宣告setting屬性的useActualParamName 引數值為false                   **

SpringMVC框架(1)之(1.3 自定義引數

一、自定義引數繫結-屬性編輯器(不推薦) 問題:① 4.1 itemsList.jsp 中增加顯示 “訂購日期” 屬性;② JSP頁面中日期拿到的是字串,而提交到Controller中POJO類ItemsCustom 屬性物件的日期欄位要變成Date型別,即字串轉換成日期型別,無法自動轉

SpringMVC框架(1)之(1.3 引數

引數繫結 一、繫結簡單型別引數:整型、字串、float/double、日期、布林(eg:Controller中方法 public String editItemsSubmit(String name,Float price)) (eg:4.2 editItems.jsp 中 name

SpringMVC 引數相關注解

@RequestParams 作用:把請求中指定名稱的引數給控制器中的形參賦值。 屬性: // <a href="account/save3.do?id=100&username=jack"> 儲存 2</a>