91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shiro與SpringMVC的整合用法

發布時間:2021-08-16 09:38:16 來源:億速云 閱讀:120 作者:chen 欄目:開發技術

這篇文章主要講解了“shiro與SpringMVC的整合用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“shiro與SpringMVC的整合用法”吧!

想要整合Shiro和springmvc,在網上找了很多例子,感覺都有一點復雜。所以就自己寫了一個最簡單整合項目,記錄在這里以備后面查看。

這個例子包含如下三個部分:

1.簡單的頁面

2.shiro配置

3.springmvc配置

shiro可以直接和spring整合,但是這樣需要單獨配置spring用于整合shiro,在配置springmvc。配置文件看起來亂七八糟的。所以這里就shiro不采用spring來管理。因此這里的整合類似 shiro + servlet + springmvc。這樣配置相對簡單好理解。但也是最簡單的配置,只能用于學習,用在實際項目中,還得改寫。

下面是項目結構圖(realm那個文件夾可有可沒有,只是如果刪除了,就需要將shiro.ini文件中 myrealm = shirospringweb.realm xxxx 那行刪除掉)

shiro與SpringMVC的整合用法

下面是具體步驟

(1).添加依賴

既然是簡單,那引用也是最少的,具體如下

dependencies {
    // Use JUnit Jupiter for testing.
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'

    // This dependency is used by the application.
    implementation 'com.google.guava:guava:30.1-jre'
	
	// ++ Adding Spring dependencies
	implementation 'org.springframework:spring-context:5.3.9'
	implementation 'org.springframework:spring-webmvc:5.3.9'
	
	// ++ Using Servlet for SpringMvc
	implementation 'javax.servlet:javax.servlet-api:4.0.1'
	
	// ++ Using shiro-web
	implementation 'org.apache.shiro:shiro-web:1.7.1'
}

其中前面兩個是建立項目自帶的,所以只需要引用后面的四個包就可以咯

(2).Servlet中配置Shiro

在servlet整合shiro,只需要在web.xml中引用shiro的上下文監聽器(讀取shiro配置文件),并配置shiro過濾器即可,具體如下:

<!-- Shiro直接攔截,不經過spring -->
<listener>
	<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<!-- 對應filter-->
<filter>
	<filter-name>shiroFilter</filter-name>
	<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
	</filter>
<!-- filter Mapping-->
<filter-mapping>
	<filter-name>shiroFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

在web.xml中配置好shiro后,需要在WEB-INF文件夾下書寫shiro.ini的配置文件,具體如下

[main]
authc.loginUrl = /login
authc.usernameParam = username
authc.passwordParam = password
authc.successUrl = /
authc.failureKeyAttribute = shiroLoginFailure
logout.redirectUrl = /
myrealm = shirospringweb.realm.MyRealm

[users]
liang = 123, role1
wang = 123, role2

[urls]
/ = anon
/test = anon
/test2 = authc
/login = authc
/logout = logout
/** = anon

這樣shiro就可以配合servlet工作了

(3).配置springMVC

最簡單springmvc的配置,只需要配置一個DispatcherServlet,并在其配置文件(resources/springmvc-base.xml)中打開包掃描,就好了,具體如下:

<!-- 配置SpringMVC -->
<servlet>
	<servlet-name>springServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:springmvc-base.xml</param-value>
	</init-param>
</servlet>
<!-- 對應servlet mapping -->
<servlet-mapping>
	<servlet-name>springServlet</servlet-name>
	<url-pattern>/*</url-pattern>
</servlet-mapping>

resources/springmvc-base.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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:aop="http://www.springframework.org/schema/aop"
    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-4.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
		
		
		<context:component-scan base-package="shirospringweb.controller"/>
		
		<mvc:annotation-driven />
		
		<!-- 用來處理當 DispatcherServlet 攔截全部請求的時候,它在RequestHandler處撿出靜態資源的請求 -->
		<mvc:default-servlet-handler />
		
</beans>

然后書寫上面shiro配置文件中的對應controller和前端頁面就可以了。具體如下:

3.1 TestController 及其頁面

TestController的代碼,如下所示

package shirospringweb.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController{
	@RequestMapping("/test")
	public String testPage(){
		return "WEB-INF/pages/test.html";
	}
}

對應前端頁面,如下所示(別看他挺多的樣子其實啥也沒有,這里主要是將了一個在springmvc頁面中也是中文的配置,可以當做沒看見)

<html>
	<head>
		<title>TestPage</title>
	</head>
	<body>
		TestPage, 
		<br/>
		This Page only display English character.
		<br />
		To display chineses character, you should add an encoding filter in web.xml, like this
		<br />
		<br />
		<br />
		&lt;filter&gt;<br />
		&lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;<br />
		&lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt;<br />
		&lt;init-param&gt;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;	&lt;param-name&gt;encoding&lt;/param-name&gt;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;	&lt;param-value&gt;UTF-8&lt;/param-value&gt;<br />
		&lt;/init-param&gt;<br />
		&lt;init-param&gt;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;	&lt;param-name&gt;forceEncoding&lt;/param-name&gt;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;	&lt;param-value&gt;true&lt;/param-value&gt;<br />
		&lt;/init-param&gt;<br />
		&lt;/filter&gt;<br />
		
		&lt;filter-mapping&gt;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;	&lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;	&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
		&lt;/filter-mapping&gt;<br />

	</body>
</html>

3.2 Test2Controller 及其頁面

Test2Controller的代碼

package shirospringweb.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Test2Controller {
	
	@RequestMapping("/test2")
	public String getTest2Page(){
		return "WEB-INF/pages/test2.html";
	}
}

其對應的界面如下:

<html>
	<head>
		Test 2 Page
	</head>
	<body>
		This is the test 2 page <br/>
		(Can not display chinese Character, more information <a href="/app/test" rel="external nofollow" >click here</a>)
	</body>
</html>

3.3 LoginController 及其對應的界面

LoginController的代碼

package shirospringweb.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class LoginController {

	@RequestMapping("/login")
	public String getLogin(){
		return "WEB-INF/pages/login.html";
	}
}

其對應的登錄界面

<html>
	<head>Login Page</head>
	<body>
		This is Login Page With No Chinese Character
		<br>
		<form action="/app/login" method="POST">
			username : <input name="username" /><br/>
			password : <input name="password" /><br/>
			<input type="submit" value="LOGIN"/>
		</form>
	</body>
</html>

好了,代碼到這兒完事兒了,下面是運行的效果圖

(4).運行效果

4.1 首先訪問/app/test頁面可以訪問到(shiro未攔截)

頁面如下

shiro與SpringMVC的整合用法

4.2 其實訪問/app/test2需要登錄,登錄后需要后跳轉(可能需要訪問兩次,有一次請求URL會帶參數,這個shiro會報錯,這是shiro的問題,可以百度解決)具體如下:

shiro與SpringMVC的整合用法

登錄后跳轉

shiro與SpringMVC的整合用法

訪問/logout會退出到主頁面,這個就不截圖了

感謝各位的閱讀,以上就是“shiro與SpringMVC的整合用法”的內容了,經過本文的學習后,相信大家對shiro與SpringMVC的整合用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

SHOW| 安新县| 扬中市| 承德市| 厦门市| 平舆县| 峨眉山市| 中山市| 兴义市| 金沙县| 巫山县| 广宁县| 伊金霍洛旗| 稷山县| 汉中市| 驻马店市| 中牟县| 莆田市| 广宁县| 中卫市| 胶州市| 双流县| 辛集市| 桐乡市| 东方市| 始兴县| 西和县| 陇南市| 化隆| 惠州市| 绥德县| 清水县| 天水市| 金山区| 凤城市| 东乌| 彩票| 鄯善县| 湄潭县| 保康县| 诸暨市|