昨天介紹了mybatis與spring的整合,今天我們完成剩下的springmvc的整合工作。
要整合springmvc首先得在web.xml中配置springmvc的前端控制器DispatcherServlet,它是springmvc的核心,為springmvc提供集中訪問點,springmvc對頁面的分派與調度功能主要靠它完成。
在我們之前配置的web.xml中加入以下springmvc的配置:
web.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<!-- Spring MVC 核心控制器 DispatcherServlet 配置 --> < servlet > < servlet-name >dispatcher</ servlet-name > < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > < init-param > <!--用于標明spring-mvc.xml配置的位置,我是存放在config文件夾下--> < param-name >contextConfigLocation</ param-name > < param-value >classpath*:config/spring-mvc.xml</ param-value > </ init-param > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >dispatcher</ servlet-name > <!-- 攔截所有*.do 的請求,交給DispatcherServlet處理,性能最好 --> < url-pattern >*.do</ url-pattern > </ servlet-mapping > <!--用于設定默認首頁--> < welcome-file-list > < welcome-file >login.jsp</ welcome-file > </ welcome-file-list > |
配置完后,我們需要在對springmvc框架進行配置,配置文件名為spring-mvc.xml,也是存放在config文件夾下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
< beans xmlns = "http://www.springframework.org/schema/beans" xmlns:context = "http://www.springframework.org/schema/context" xmlns:mvc = "http://www.springframework.org/schema/mvc" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 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"> <!--掃描控制器,當配置了它后,Spring會自動的到com.mjl.controller 下掃描帶有@controller @service @component等注解等類,將他們自動實例化--> < context:component-scan base-package = "com.mjl.controller" /> <!--<mvc:annotation-driven /> 會自動注冊DefaultAnnotationHandlerMapping與 AnnotationMethodHandlerAdapter 兩個bean,它解決了一些@controllerz注解使用時的提前配置--> < mvc:annotation-driven /> <!--配置 頁面控制器--> < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name = "prefix" value = "/" /> < property name = "suffix" value = ".jsp" /> </ bean > </ beans > |
當springmvc配置完成后,就需要編寫業務啦,也就是service包下的東西,首先編寫一個接口類userservice,里面存放了我們抽象出來的登錄方法login
1
2
3
4
5
6
7
8
9
10
|
package com.mjl.service; import org.springframework.ui.Model; /** * Created by alvin on 15/9/7. */ public interface UserService { public boolean login(String username,String password); } |
然后在創建一個userservice的實現類userserviceimpl用于實現我們所抽象出來的登錄方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package com.mjl.service; import com.mjl.dao.IUserDao; import com.mjl.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import org.springframework.ui.Model; /** * Created by alvin on 15/9/7. */ //@Service("UserService") 注解用于標示此類為業務層組件,在使用時會被注解的類會自動由 //spring進行注入,無需我們創建實例 @Service ( "UserService" ) public class UserServiceImpl implements UserService { //自動注入iuserdao 用于訪問數據庫 @Autowired IUserDao Mapper; //登錄方法的實現,從jsp頁面獲取username與password public boolean login(String username, String password) { // System.out.println("輸入的賬號:" + username + "輸入的密碼:" + password); //對輸入賬號進行查詢,取出數據庫中保存對信息 User user = Mapper.selectByName(username); if (user != null ) { // System.out.println("查詢出來的賬號:" + user.getUsername() + "密碼:" + user.getPassword()); // System.out.println("---------"); if (user.getUsername().equals(username) && user.getPassword().equals(password)) return true ; } return false ; } } |
編寫完業務層代碼后,我們就可以寫控制層代碼啦,控制層的代碼用于處理頁面提交的業務
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package com.mjl.controller; import com.mjl.model.User; import com.mjl.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; /** * Created by alvin on 15/9/7. */ //@Controller注解用于標示本類為web層控制組件 @Controller //@RequestMapping("/user")用于標定訪問時對url位置 @RequestMapping ( "/user" ) //在默認情況下springmvc的實例都是單例模式,所以使用scope域將其注解為每次都創建一個新的實例 @Scope ( "prototype" ) public class UserController { //自動注入業務層的userService類 @Autowired UserService userService; //login業務的訪問位置為/user/login @RequestMapping ( "/login" ) public String login(User user,HttpServletRequest request){ //調用login方法來驗證是否是注冊用戶 boolean loginType = userService.login(user.getUsername(),user.getPassword()); if (loginType){ //如果驗證通過,則將用戶信息傳到前臺 request.setAttribute( "user" ,user); //并跳轉到success.jsp頁面 return "success" ; } else { //若不對,則將錯誤信息顯示到錯誤頁面 request.setAttribute( "message" , "用戶名密碼錯誤" ); return "error" ; } } } |
控制層代碼寫完后,就可以進行前端頁面代碼編寫了,登錄代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<%-- Created by IntelliJ IDEA. User: alvin Date: 15/9/7 Time: 下午10:05 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> < html > < head > < title ></ title > </ head > < body > < br > < br > < br > < br > < br > < form name = "form1" action = "/user/login.do" method = "post" > < table width = "300" border = "1" align = "center" > < tr > < td colspan = "2" >登入窗口</ td > </ tr > < tr > < td >用戶名:</ td > < td >< input type = "text" name = "username" > </ td > </ tr > < tr > < td >密碼:</ td > < td >< input type = "password" name = "password" /> </ td > </ tr > < tr > < td colspan = "2" > < input type = "submit" name = "submit" value = "登錄" /> </ td > </ tr > </ table > </ form > </ body > </ html > |
登入成功代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<%-- Created by IntelliJ IDEA. User: alvin Date: 15/9/8 Time: 下午6:21 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> < html > < head > < title ></ title > </ head > < body > 登入成功! < br > 您好!${user.username} < br > < a href = "/login.jsp" rel = "external nofollow" >返回</ a > </ body > </ html > |
登入失敗代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<%-- Created by IntelliJ IDEA. User: alvin Date: 15/9/8 Time: 下午6:22 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> < html > < head > < title ></ title > </ head > < body > 登入失敗! ${message} < br > < a href="<%=path%>/login.jsp" rel="external nofollow" >返回</ a > </ body > </ html > |
OK,已經大功告成,跑一遍看看能不能使用吧
若我輸入用戶名:1234 密碼:1234 則會提示登錄失敗,如下圖所示:
到這里,本文已經全部結束,希望能對在整合springmvc,spring,my baits框架時有困惑的同學有所幫助,本文的代碼已經上傳github,以后我也會慢慢的增加功能,也會上傳相關代碼,希望大家能夠共同進步!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。