<big id="x0wqp"></big>

\n

Hello, <\/h4>\n

注銷登錄<\/a><\/h4>\n

管理員頁面<\/a><\/h4>\n

普通用戶頁面<\/a><\/h4>\n<\/body>\n<\/html><\/pre><\/p>(2)login.html

\n\n\n    \n    Title<\/title>\n<\/head>\n<body>
<h1><a href="http://www.miracleart.cn/">国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂</a></h1>\n<div>\n    <form action=\"\/doLogin\" method=\"post\">\n        <input type=\"text\" name=\"username\"><br>\n        <input type=\"password\" name=\"password\"><br>\n        <div th:text=\"${error}\"><\/div>\n        <input type=\"submit\" value=\"登錄\">\n    <\/form>\n<\/div>\n<\/body>\n<\/html><\/pre><\/p>(3)user.html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>Title<\/title>\n<\/head>\n<body>\n<h2>普通用戶頁面<\/h2>\n<\/body>\n<\/html><\/pre><\/p>(4)admin. html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>Title<\/title>\n<\/head>\n<body>\n<h2>管理員頁面<\/h2>\n<\/body>\n<\/html><\/pre><\/p>(5)unauthorized.html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>\n<html lang=\"en\" xmlns:th=\"http:\/\/www.thymeleaf.org\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>Title<\/title>\n<\/head>\n<body>\n<div>\n    <h4>未獲授權(quán),非法訪問<\/h4>\n    <h4 th:text=\"${error}\"><\/h4>\n<\/div>\n<\/body>\n<\/html><\/pre>3. 測試<h4><\/h4> 啟動項(xiàng)目,造訪登入頁面,使用sang\/123 登入<p><\/p>\n<p> <img src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/164\/168371214980474.png\" alt=\"SpringBoot安全管理之Shiro框架怎麼使用\"><\/p>#注意:由於sang 使用者不具備admin 角色,因此登入成功後的頁面沒有前往管理員頁面的超連結(jié)。 <p><\/p>然後使用 admin\/123 登入。 <p><\/p>\n<p><img src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/164\/168371214971173.png\" alt=\"SpringBoot安全管理之Shiro框架怎麼使用\"><\/p>如果使用者使用sang 登錄,然後去存?。篽ttp:\/\/localhost:8080\/admin,會跳到未授權(quán)頁面<p><\/p>\n<p><img src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/164\/168371215063096.png\" alt=\"SpringBoot安全管理之Shiro框架怎麼使用\"><\/p>"}	</script>
	
<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<script>var V_PATH="/";window.onerror=function(){ return true; };</script>
</head>

<body data-commit-time="2023-12-28T14:50:12+08:00" class="editor_body body2_2">
	<link rel="stylesheet" type="text/css" href="/static/csshw/stylehw.css">
<header>
    <div   id="377j5v51b"   class="head">
        <div   id="377j5v51b"   class="haed_left">
            <div   id="377j5v51b"   class="haed_logo">
                <a href="http://www.miracleart.cn/zh-tw/" title="" class="haed_logo_a">
                    <img src="/static/imghw/logo.png" alt="" class="haed_logoimg">
                </a>
            </div>
            <div   id="377j5v51b"   class="head_nav">
                <div   id="377j5v51b"   class="head_navs">
                    <a href="javascript:;" title="社群" class="head_nava head_nava-template1">社群</a>
                    <div   class="377j5v51b"   id="dropdown-template1" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://www.miracleart.cn/zh-tw/article.html" title="文章" class="languagechoosea on">文章</a>
                            <a href="http://www.miracleart.cn/zh-tw/faq/zt" title="合集" class="languagechoosea">合集</a>
                            <a href="http://www.miracleart.cn/zh-tw/wenda.html" title="問答" class="languagechoosea">問答</a>
                        </div>
                    </div>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="javascript:;" title="學(xué)習(xí)" class="head_nava head_nava-template1_1">學(xué)習(xí)</a>
                    <div   class="377j5v51b"   id="dropdown-template1_1" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://www.miracleart.cn/zh-tw/course.html" title="課程" class="languagechoosea on">課程</a>
                            <a href="http://www.miracleart.cn/zh-tw/dic/" title="程式設(shè)計(jì)字典" class="languagechoosea">程式設(shè)計(jì)字典</a>
                        </div>
                    </div>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="javascript:;" title="工具庫" class="head_nava head_nava-template1_2">工具庫</a>
                    <div   class="377j5v51b"   id="dropdown-template1_2" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://www.miracleart.cn/zh-tw/toolset/development-tools" title="開發(fā)工具" class="languagechoosea on">開發(fā)工具</a>
                            <a href="http://www.miracleart.cn/zh-tw/toolset/website-source-code" title="網(wǎng)站源碼" class="languagechoosea">網(wǎng)站源碼</a>
                            <a href="http://www.miracleart.cn/zh-tw/toolset/php-libraries" title="PHP 函式庫" class="languagechoosea">PHP 函式庫</a>
                            <a href="http://www.miracleart.cn/zh-tw/toolset/js-special-effects" title="JS特效" class="languagechoosea on">JS特效</a>
                            <a href="http://www.miracleart.cn/zh-tw/toolset/website-materials" title="網(wǎng)站素材" class="languagechoosea on">網(wǎng)站素材</a>
                            <a href="http://www.miracleart.cn/zh-tw/toolset/extension-plug-ins" title="擴(kuò)充插件" class="languagechoosea on">擴(kuò)充插件</a>
                        </div>
                    </div>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="http://www.miracleart.cn/zh-tw/ai" title="AI工具" class="head_nava head_nava-template1_3">AI工具</a>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="javascript:;" title="休閒" class="head_nava head_nava-template1_3">休閒</a>
                    <div   class="377j5v51b"   id="dropdown-template1_3" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://www.miracleart.cn/zh-tw/game" title="遊戲下載" class="languagechoosea on">遊戲下載</a>
                            <a href="http://www.miracleart.cn/zh-tw/mobile-game-tutorial/" title="遊戲教程" class="languagechoosea">遊戲教程</a>

                        </div>
                    </div>
                </div>
            </div>
        </div>
                    <div   id="377j5v51b"   class="head_search">
                <input id="key_words"  onkeydown="if (event.keyCode == 13) searchs('zh-tw')" class="search-input" type="text" autocomplete="off" name="keywords" required="required" placeholder="Block,address,transaction,news" value="">
                <a href="javascript:;" title="搜尋"  onclick="searchs('zh-tw')"><img src="/static/imghw/find.png" alt="搜尋"></a>
            </div>
                <div   id="377j5v51b"   class="head_right">
            <div   id="377j5v51b"   class="haed_language">
                <a href="javascript:;" class="layui-btn haed_language_btn">繁體中文<i class="layui-icon layui-icon-triangle-d"></i></a>
                <div   class="377j5v51b"   id="dropdown-template" style="display: none;">
                    <div   id="377j5v51b"   class="languagechoose">
                                                <a href="javascript:setlang('zh-cn');" title="簡體中文" class="languagechoosea">簡體中文</a>
                                                <a href="javascript:setlang('en');" title="English" class="languagechoosea">English</a>
                                                <a href="javascript:;" title="繁體中文" class="languagechoosea">繁體中文</a>
                                                <a href="javascript:setlang('ja');" title="日本語" class="languagechoosea">日本語</a>
                                                <a href="javascript:setlang('ko');" title="???" class="languagechoosea">???</a>
                                                <a href="javascript:setlang('ms');" title="Melayu" class="languagechoosea">Melayu</a>
                                                <a href="javascript:setlang('fr');" title="Fran?ais" class="languagechoosea">Fran?ais</a>
                                                <a href="javascript:setlang('de');" title="Deutsch" class="languagechoosea">Deutsch</a>
                                            </div>
                </div>
            </div>
            <span id="377j5v51b"    class="head_right_line"></span>
                            <div style="display: block;" id="login" class="haed_login ">
                    <a href="javascript:;"  title="Login" class="haed_logina ">Login</a>
                </div>
                <div style="display: block;" id="reg" class="head_signup login">
                    <a href="javascript:;"  title="singup" class="head_signupa">singup</a>
                </div>
            
        </div>
    </div>
</header>

	
	<main>
		<div   id="377j5v51b"   class="Article_Details_main">
			<div   id="377j5v51b"   class="Article_Details_main1">
							<div   id="377j5v51b"   class="Article_Details_main1L">
					<div   id="377j5v51b"   class="Article_Details_main1Lmain" id="Article_Details_main1Lmain">
						<div   id="377j5v51b"   class="Article_Details_main1L1">目錄</div>
						<div   id="377j5v51b"   class="Article_Details_main1L2" id="Article_Details_main1L2">
							<!-- 左側(cè)懸浮,文章定位標(biāo)題1 id="Article_Details_main1L2s_1"-->
															<div   id="377j5v51b"   class="Article_Details_main1L2s ">
									<a href="#Shiro-簡介" title="Shiro 簡介" >Shiro 簡介</a>
								</div>
																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
									<a href="#整合Shiro" title="整合Shiro" >整合Shiro</a>
								</div>
																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
									<a href="#建立項(xiàng)目" title="1. 建立項(xiàng)目" >1. 建立項(xiàng)目</a>
								</div>
																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
									<a href="#Shiro基本配置" title="2. Shiro基本配置" >2. Shiro基本配置</a>
								</div>
														</div>
					</div>
				</div>
							<div   id="377j5v51b"   class="Article_Details_main1M">
					<div   id="377j5v51b"   class="phpgenera_Details_mainL1">
						<a href="http://www.miracleart.cn/zh-tw/" title="首頁"
							class="phpgenera_Details_mainL1a">首頁</a>
						<img src="/static/imghw/top_right.png" alt="" />
												<a href="http://www.miracleart.cn/zh-tw/java/"
							class="phpgenera_Details_mainL1a">Java</a>
						<img src="/static/imghw/top_right.png" alt="" />
												<a href="http://www.miracleart.cn/zh-tw/java-article.html"
							class="phpgenera_Details_mainL1a">java教程</a>
						<img src="/static/imghw/top_right.png" alt="" />
						<span>SpringBoot安全管理之Shiro框架怎麼使用</span>
					</div>
					
					<div   id="377j5v51b"   class="Articlelist_txts">
						<div   id="377j5v51b"   class="Articlelist_txts_info">
							<h1 class="Articlelist_txts_title">SpringBoot安全管理之Shiro框架怎麼使用</h1>
							<div   id="377j5v51b"   class="Articlelist_txts_info_head">
								<div   id="377j5v51b"   class="author_info">
									<a href="http://www.miracleart.cn/zh-tw/member/164.html"  class="author_avatar">
									<img class="lazy"  data-src="https://img.php.cn/upload/avatar/000/000/164/59190898474f6485.png" src="/static/imghw/default1.png" alt="PHPz">
									</a>
									<div   id="377j5v51b"   class="author_detail">
																			<a href="http://www.miracleart.cn/zh-tw/member/164.html" class="author_name">PHPz</a>
                                										</div>
								</div>
                			</div>
							<span id="377j5v51b"    class="Articlelist_txts_time">May 10, 2023 pm	 05:49 PM</span>
															<div   id="377j5v51b"   class="Articlelist_txts_infos">
																			<span id="377j5v51b"    class="Articlelist_txts_infoss on">springboot</span>
																			<span id="377j5v51b"    class="Articlelist_txts_infoss ">shiro</span>
																	</div>
														
						</div>
					</div>
					<hr />
					<div   id="377j5v51b"   class="article_main php-article">
						<div   id="377j5v51b"   class="article-list-left detail-content-wrap content">
						<ins class="adsbygoogle"
							style="display:block; text-align:center;"
							data-ad-layout="in-article"
							data-ad-format="fluid"
							data-ad-client="ca-pub-5902227090019525"
							data-ad-slot="3461856641">
						</ins>
						

					<h3 id="Shiro-簡介">Shiro 簡介</h3>
<p>Apache Shiro 是一個(gè)開源的輕量級的 Java 安全框架,它提供身份驗(yàn)證、授權(quán)、密碼管理以及會話管理等功能。相對於 Spring Security ,Shiro 框架更加直覺、易用,同時(shí)也能提供健壯的安全性。 </p>
<p>在傳統(tǒng)的SSM 框架中,手動整合Shiro 的配置步驟還是比較多的,針對Spring Boot ,Shiro 官方提供了shiro-spring-boot-web-starter 用來簡化Shiro 在Spring Boot 中的配置。 </p>
<h3 id="整合Shiro">整合Shiro</h3>
<h4 id="建立項(xiàng)目">1. 建立項(xiàng)目</h4>
<p>首先建立一個(gè)普通的Spring Boot Web 項(xiàng)目,加入Shiro 依賴以及頁面模板依賴</p><pre class='brush:php;toolbar:false;'><dependency>
  <groupId>org.apache.shiro</groupId>
  <artifactId>shiro-spring-boot-web-starter</artifactId>
  <version>1.4.0</version>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
  <groupId>com.github.theborakompanioni</groupId>
  <artifactId>thymeleaf-extras-shiro</artifactId>
  <version>2.0.0</version>
</dependency></pre><p>這裡不需要加入spring-boot-starter-web 依賴,shiro-spring-boot-web-starter 中已經(jīng)依賴了spring-boot-starter-web 。同時(shí),此處使用 Thymeleaf 模板,為了在 Thymeleaf 使用 shiro 標(biāo)籤,加入了 thymeleaf-extras-shiro 依賴。 </p><h4 id="Shiro基本配置">2. Shiro基本配置</h4><p>在application.properties 中配置Shiro 的基本資訊</p><blockquote><p># 開啟Shiro 配置,預(yù)設(shè)為true<br/>shiro.enabled =true<br/># 開啟Shiro Web 配置,預(yù)設(shè)為true<br/>shiro.web.enabled=true<br/># 設(shè)定登入位址,預(yù)設(shè)為/login.jsp<br/>shiro.loginUrl=/login<br/> # 配置登入成功的位址,預(yù)設(shè)為/<br/>shiro.successUrl=/index<br/># 未獲授權(quán)預(yù)設(shè)跳轉(zhuǎn)位址<br/>shiro.unauthorizedUrl=/unauthorized<br/># 是否允許透過URL 參數(shù)實(shí)現(xiàn)會話跟蹤,如果網(wǎng)站支援Cookie,可以關(guān)閉此選項(xiàng),預(yù)設(shè)為true<br/>shiro.sessionManager.sessionIdUrlRewritingEnabled=true<br/># 是否允許透過Cookie 實(shí)現(xiàn)會話跟蹤,預(yù)設(shè)為true<br/>shiro.sessionManager.sessionIdCookieEnabled=true </p></blockquote><p>然後在Java 程式碼中設(shè)定Shiro ,提供兩個(gè)最基本的Bean 即可</p><pre class='brush:php;toolbar:false;'>@Configuration
public class ShiroConfig {
    @Bean
    public Realm realm() {
        TextConfigurationRealm realm = new TextConfigurationRealm();
        realm.setUserDefinitions("sang=123,user\n admin=123,admin");
        realm.setRoleDefinitions("admin=read,write\n user=read");
        return realm;
    }
    @Bean
    public ShiroFilterChainDefinition shiroFilterChainDefinition() {
        DefaultShiroFilterChainDefinition chainDefinition =
                new DefaultShiroFilterChainDefinition();
        chainDefinition.addPathDefinition("/login", "anon");
        chainDefinition.addPathDefinition("/doLogin", "anon");
        chainDefinition.addPathDefinition("/logout", "logout");
        chainDefinition.addPathDefinition("/**", "authc");
        return chainDefinition;
    }
    @Bean
    public ShiroDialect shiroDialect() {
        return new ShiroDialect();
    }
}</pre><p>程式碼解釋:</p><ul class=" list-paddingleft-2"><li><p>這裡提供兩個(gè)關(guān)鍵的Bean ,一個(gè)是Realm,另一個(gè)是ShiroFilterChainDefinition 。至於ShiroDialect 則是為了支持在Thymeleaf 中使用Shiro 標(biāo)籤,如果不在Thymeleaf 中使用Shiro 標(biāo)籤,那麼可以不提供ShiroDialect</p></li><li><p>#Realm 可以是自訂的Realm,也可以是Shiro提供的Realm,簡單起見,此處沒有配置資料庫連接,直接配置了兩個(gè)使用者:sang/123 和admin/123 ,分別對應(yīng)角色user 和admin。 </p></li><li><p>ShiroFilterChainDefinition Bean 中配置了基本的過濾規(guī)則,“/login” 和“/doLogin”,可以匿名訪問,“/logout”是一個(gè)註銷登錄請求,其餘請求則都需要認(rèn)證後才能存取</p></li></ul><p>然後配置登入介面以及頁面存取介面</p><pre class='brush:php;toolbar:false;'>@Controller
public class UserController {
    @PostMapping("/doLogin")
    public String doLogin(String username, String password, Model model) {
        UsernamePasswordToken token = new UsernamePasswordToken(username, password);
        Subject subject = SecurityUtils.getSubject();
        try {
            subject.login(token);
        } catch (AuthenticationException e) {
            model.addAttribute("error", "用戶名或密碼輸入錯(cuò)誤!");
            return "login";
        }
        return "redirect:/index";
    }
    @RequiresRoles("admin")
    @GetMapping("/admin")
    public String admin() {
        return "admin";
    }
    @RequiresRoles(value = {"admin", "user"}, logical = Logical.OR)
    @GetMapping("/user")
    public String user() {
        return "user";
    }
}</pre><p>程式碼解釋:</p><ul class=" list-paddingleft-2"><li>##在doLogin 方法中,先建立一個(gè)UsernamePasswordToken 實(shí)例,然後取得一個(gè)Subject 物件並呼叫該物件中的login 方法執(zhí)行登入操作,在登入操作執(zhí)行過程中,當(dāng)有異常拋出時(shí),說明登入失敗,攜帶錯(cuò)誤訊息返回登入視圖;當(dāng)?shù)侨氤晒r(shí),則重定向到“/index”<p></p></li><li>接下來暴露兩個(gè)接口“/admin”和“/user”,對於“/admin”接口,需要具有admin 角色才可以存取;對於「/user」接口,具備admin 角色和user角色其中任何一個(gè)即可訪問<p></p></li></ul>對於其他不需要角色就能訪問的接口,直接在WebMvc 中配置即可<p><pre class='brush:php;toolbar:false;'>@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login").setViewName("login");
        registry.addViewController("/index").setViewName("index");
        registry.addViewController("/unauthorized").setViewName("unauthorized");
    }
}</pre></p>接下來建立全域異常處理器進(jìn)行全域異常處理,此處主要是處理授權(quán)異常<p><pre class='brush:php;toolbar:false;'>@ControllerAdvice
public class ExceptionController {
    @ExceptionHandler(AuthorizationException.class)
    public ModelAndView error(AuthorizationException e) {
        ModelAndView mv = new ModelAndView("unauthorized");
        mv.addObject("error", e.getMessage());
        return mv;
    }
}</pre></p>當(dāng)使用者存取未授權(quán)的資源時(shí),跳到unauthorized 檢視中,並攜帶出錯(cuò)誤訊息。 <p></p>設(shè)定完成後,最後在 resources/templates 目錄下建立 5 個(gè) HTML 頁面進(jìn)行測試。 <p></p>(1)index.html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>
<html lang="en" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h4>Hello, <shiro:principal/></h4>
<h4><a href="/logout" rel="external nofollow" >注銷登錄</a></h4>
<h4><a shiro:hasRole="admin" href="/admin" rel="external nofollow" >管理員頁面</a></h4>
<h4><a shiro:hasAnyRoles="admin,user" href="/user" rel="external nofollow" >普通用戶頁面</a></h4>
</body>
</html></pre></p>(2)login.html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <form action="/doLogin" method="post">
        <input type="text" name="username"><br>
        <input type="password" name="password"><br>
        <div th:text="${error}"></div>
        <input type="submit" value="登錄">
    </form>
</div>
</body>
</html></pre></p>(3)user.html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>普通用戶頁面</h2>
</body>
</html></pre></p>(4)admin. html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>管理員頁面</h2>
</body>
</html></pre></p>(5)unauthorized.html<p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <h4>未獲授權(quán),非法訪問</h4>
    <h4 th:text="${error}"></h4>
</div>
</body>
</html></pre>3. 測試<h4></h4> 啟動項(xiàng)目,造訪登入頁面,使用sang/123 登入<p></p>
<p> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168371214980474.png" class="lazy" alt="SpringBoot安全管理之Shiro框架怎麼使用"></p>#注意:由於sang 使用者不具備admin 角色,因此登入成功後的頁面沒有前往管理員頁面的超連結(jié)。 <p></p>然後使用 admin/123 登入。 <p></p>
<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168371214971173.png" class="lazy" alt="SpringBoot安全管理之Shiro框架怎麼使用"></p>如果使用者使用sang 登錄,然後去存?。篽ttp://localhost:8080/admin,會跳到未授權(quán)頁面<p></p>
<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168371215063096.png" class="lazy" alt="SpringBoot安全管理之Shiro框架怎麼使用"></p><p>以上是SpringBoot安全管理之Shiro框架怎麼使用的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!</p>


						</div>
					</div>
					<div   id="377j5v51b"   class="wzconShengming_sp">
						<div   id="377j5v51b"   class="bzsmdiv_sp">本網(wǎng)站聲明</div>
						<div>本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn</div>
					</div>
				</div>

				<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-5902227090019525"
     data-ad-slot="2507867629"></ins>



				<div   id="377j5v51b"   class="AI_ToolDetails_main4sR">


				<ins class="adsbygoogle"
        style="display:block"
        data-ad-client="ca-pub-5902227090019525"
        data-ad-slot="3653428331"
        data-ad-format="auto"
        data-full-width-responsive="true"></ins>
    


					<!-- <div   id="377j5v51b"   class="phpgenera_Details_mainR4">
						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
									src="/static/imghw/hotarticle2.png" alt="" />
								<h2>熱門文章</h2>
							</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796821119.html" title="指南:恆星刀片保存文件位置/保存文件丟失/不保存" class="phpgenera_Details_mainR4_bottom_title">指南:恆星刀片保存文件位置/保存文件丟失/不保存</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 週前</span>
										<span>By DDD</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796827210.html" title="Oguri Cap Build Guide |漂亮的德比志" class="phpgenera_Details_mainR4_bottom_title">Oguri Cap Build Guide |漂亮的德比志</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>2 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796828723.html" title="Agnes Tachyon Build Guide |漂亮的德比志" class="phpgenera_Details_mainR4_bottom_title">Agnes Tachyon Build Guide |漂亮的德比志</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>2 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796821436.html" title="沙丘:覺醒 - 高級行星學(xué)家Quest演練" class="phpgenera_Details_mainR4_bottom_title">沙丘:覺醒 - 高級行星學(xué)家Quest演練</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796821278.html" title="約會一切:德克和哈珀關(guān)係指南" class="phpgenera_Details_mainR4_bottom_title">約會一切:德克和哈珀關(guān)係指南</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
														</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
								<a href="http://www.miracleart.cn/zh-tw/article.html">顯示更多</a>
							</div>
						</div>
					</div> -->


											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/hottools2.png" alt="" />
									<h2>熱AI工具</h2>
								</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title">
													<h3>Undress AI Tool</h3>
												</a>
												<p>免費(fèi)脫衣圖片</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title">
													<h3>Undresser.AI Undress</h3>
												</a>
												<p>人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title">
													<h3>AI Clothes Remover</h3>
												</a>
												<p>用於從照片中去除衣服的線上人工智慧工具。</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title">
													<h3>Clothoff.io</h3>
												</a>
												<p>AI脫衣器</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title">
													<h3>Video Face Swap</h3>
												</a>
												<p>使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!</p>
											</div>
										</div>
																</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
									<a href="http://www.miracleart.cn/zh-tw/ai">顯示更多</a>
								</div>
							</div>
						</div>
					


					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
									src="/static/imghw/hotarticle2.png" alt="" />
								<h2>熱門文章</h2>
							</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796821119.html" title="指南:恆星刀片保存文件位置/保存文件丟失/不保存" class="phpgenera_Details_mainR4_bottom_title">指南:恆星刀片保存文件位置/保存文件丟失/不保存</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 週前</span>
										<span>By DDD</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796827210.html" title="Oguri Cap Build Guide |漂亮的德比志" class="phpgenera_Details_mainR4_bottom_title">Oguri Cap Build Guide |漂亮的德比志</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>2 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796828723.html" title="Agnes Tachyon Build Guide |漂亮的德比志" class="phpgenera_Details_mainR4_bottom_title">Agnes Tachyon Build Guide |漂亮的德比志</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>2 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796821436.html" title="沙丘:覺醒 - 高級行星學(xué)家Quest演練" class="phpgenera_Details_mainR4_bottom_title">沙丘:覺醒 - 高級行星學(xué)家Quest演練</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/1796821278.html" title="約會一切:德克和哈珀關(guān)係指南" class="phpgenera_Details_mainR4_bottom_title">約會一切:德克和哈珀關(guān)係指南</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 週前</span>
										<span>By Jack chen</span>
									</div>
								</div>
														</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
								<a href="http://www.miracleart.cn/zh-tw/article.html">顯示更多</a>
							</div>
						</div>
					</div>


											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/hottools2.png" alt="" />
									<h2>熱工具</h2>
								</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/92" title="記事本++7.3.1" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="記事本++7.3.1" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/92" title="記事本++7.3.1" class="phpmain_tab2_mids_title">
													<h3>記事本++7.3.1</h3>
												</a>
												<p>好用且免費(fèi)的程式碼編輯器</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/93" title="SublimeText3漢化版" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3漢化版" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/93" title="SublimeText3漢化版" class="phpmain_tab2_mids_title">
													<h3>SublimeText3漢化版</h3>
												</a>
												<p>中文版,非常好用</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/121" title="禪工作室 13.0.1" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="禪工作室 13.0.1" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/121" title="禪工作室 13.0.1" class="phpmain_tab2_mids_title">
													<h3>禪工作室 13.0.1</h3>
												</a>
												<p>強(qiáng)大的PHP整合開發(fā)環(huán)境</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title">
													<h3>Dreamweaver CS6</h3>
												</a>
												<p>視覺化網(wǎng)頁開發(fā)工具</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_top_img">
												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac版" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://www.miracleart.cn/zh-tw/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_title">
													<h3>SublimeText3 Mac版</h3>
												</a>
												<p>神級程式碼編輯軟體(SublimeText3)</p>
											</div>
										</div>
																	</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
									<a href="http://www.miracleart.cn/zh-tw/ai">顯示更多</a>
								</div>
							</div>
						</div>
										

					
					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
									src="/static/imghw/hotarticle2.png" alt="" />
								<h2>熱門話題</h2>
							</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/gmailyxdlrkzn" title="gmail信箱登陸入口在哪裡" class="phpgenera_Details_mainR4_bottom_title">gmail信箱登陸入口在哪裡</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/eyess.png" alt="" />
											<span>8639</span>
										</div>
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/tiezi.png" alt="" />
											<span>17</span>
										</div>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/java-tutorial" title="Java教學(xué)" class="phpgenera_Details_mainR4_bottom_title">Java教學(xué)</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/eyess.png" alt="" />
											<span>1785</span>
										</div>
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/tiezi.png" alt="" />
											<span>16</span>
										</div>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/cakephp-tutor" title="CakePHP 教程" class="phpgenera_Details_mainR4_bottom_title">CakePHP 教程</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/eyess.png" alt="" />
											<span>1729</span>
										</div>
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/tiezi.png" alt="" />
											<span>56</span>
										</div>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/laravel-tutori" title="Laravel 教程" class="phpgenera_Details_mainR4_bottom_title">Laravel 教程</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/eyess.png" alt="" />
											<span>1581</span>
										</div>
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/tiezi.png" alt="" />
											<span>29</span>
										</div>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://www.miracleart.cn/zh-tw/faq/php-tutorial" title="PHP教程" class="phpgenera_Details_mainR4_bottom_title">PHP教程</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/eyess.png" alt="" />
											<span>1445</span>
										</div>
										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
											<img src="/static/imghw/tiezi.png" alt="" />
											<span>31</span>
										</div>
									</div>
								</div>
														</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
								<a href="http://www.miracleart.cn/zh-tw/faq/zt">顯示更多</a>
							</div>
						</div>
					</div>
				</div>
			</div>
							<div   id="377j5v51b"   class="Article_Details_main2">
					<div   id="377j5v51b"   class="phpgenera_Details_mainL4">
						<div   id="377j5v51b"   class="phpmain1_2_top">
							<a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img
									src="/static/imghw/index2_title2.png" alt="" /></a>
						</div>
						<div   id="377j5v51b"   class="phpgenera_Details_mainL4_info">

													<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/553384.html" title="Springboot怎麼整合Jasypt實(shí)現(xiàn)設(shè)定檔加密" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/000/887/227/168558094759392.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Springboot怎麼整合Jasypt實(shí)現(xiàn)設(shè)定檔加密" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/553384.html" title="Springboot怎麼整合Jasypt實(shí)現(xiàn)設(shè)定檔加密" class="phphistorical_Version2_mids_title">Springboot怎麼整合Jasypt實(shí)現(xiàn)設(shè)定檔加密</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">Jun 01, 2023 am	 08:55 AM</span>
								<p class="Articlelist_txts_p">Jasypt介紹Jasypt是一個(gè)java庫,它允許開發(fā)員以最少的努力為他/她的專案添加基本的加密功能,並且不需要對加密工作原理有深入的了解用於單向和雙向加密的高安全性、基於標(biāo)準(zhǔn)的加密技術(shù)。加密密碼,文本,數(shù)字,二進(jìn)位檔案...適合整合到基於Spring的應(yīng)用程式中,開放API,用於任何JCE提供者...添加如下依賴:com.github.ulisesbocchiojasypt-spring-boot-starter2. 1.1Jasypt好處保護(hù)我們的系統(tǒng)安全,即使程式碼洩露,也可以保證資料來源的</p>
							</div>
														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/554254.html" title="怎麼在SpringBoot中使用Redis實(shí)現(xiàn)分散式鎖" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/000/887/227/168575139384131.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="怎麼在SpringBoot中使用Redis實(shí)現(xiàn)分散式鎖" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/554254.html" title="怎麼在SpringBoot中使用Redis實(shí)現(xiàn)分散式鎖" class="phphistorical_Version2_mids_title">怎麼在SpringBoot中使用Redis實(shí)現(xiàn)分散式鎖</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">Jun 03, 2023 am	 08:16 AM</span>
								<p class="Articlelist_txts_p">一、Redis實(shí)現(xiàn)分散式鎖原理為什麼需要分散式鎖在聊分散式鎖之前,有必要先解釋一下,為什麼需要分散式鎖。與分散式鎖相對就的是單機(jī)鎖,我們在寫多執(zhí)行緒程式時(shí),避免同時(shí)操作一個(gè)共享變數(shù)產(chǎn)生資料問題,通常會使用一把鎖來互斥以保證共享變數(shù)的正確性,其使用範(fàn)圍是在同一個(gè)進(jìn)程中。如果換做是多個(gè)進(jìn)程,需要同時(shí)操作一個(gè)共享資源,如何互斥?現(xiàn)在的業(yè)務(wù)應(yīng)用通常是微服務(wù)架構(gòu),這也意味著一個(gè)應(yīng)用會部署多個(gè)進(jìn)程,多個(gè)進(jìn)程如果需要修改MySQL中的同一行記錄,為了避免操作亂序?qū)е麦v數(shù)據(jù),此時(shí)就需要引入分佈式鎖了。想要實(shí)現(xiàn)分</p>
							</div>
														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/554495.html" title="SpringBoot怎麼自訂Redis實(shí)作快取序列化" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/000/887/227/168576314558962.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="SpringBoot怎麼自訂Redis實(shí)作快取序列化" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/554495.html" title="SpringBoot怎麼自訂Redis實(shí)作快取序列化" class="phphistorical_Version2_mids_title">SpringBoot怎麼自訂Redis實(shí)作快取序列化</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">Jun 03, 2023 am	 11:32 AM</span>
								<p class="Articlelist_txts_p">1.自訂RedisTemplate1.1、RedisAPI預(yù)設(shè)序列化機(jī)制基於API的Redis快取實(shí)作是使用RedisTemplate範(fàn)本進(jìn)行資料快取操作的,這裡開啟RedisTemplate類,查看該類別的源碼資訊publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations,BeanClassLoaderAware{//聲明了value的各種序列化方式,初始值為空@NullableprivateRedisSe</p>
							</div>
														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/554791.html" title="springboot讀取檔案打成jar包後存取不到怎麼解決" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/202306/03/2023060316381913142.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="springboot讀取檔案打成jar包後存取不到怎麼解決" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/554791.html" title="springboot讀取檔案打成jar包後存取不到怎麼解決" class="phphistorical_Version2_mids_title">springboot讀取檔案打成jar包後存取不到怎麼解決</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">Jun 03, 2023 pm	 04:38 PM</span>
								<p class="Articlelist_txts_p">springboot讀取文件,打成jar包後訪問不到最新開發(fā)出現(xiàn)一種情況,springboot打成jar包後讀取不到文件,原因是打包之後,文件的虛擬路徑是無效的,只能通過流去讀取。文件在resources下publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input</p>
							</div>
														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/552711.html" title="SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/000/465/014/168542881738698.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/552711.html" title="SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列" class="phphistorical_Version2_mids_title">SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">May 30, 2023 pm	 02:40 PM</span>
								<p class="Articlelist_txts_p">使用場景1、下單成功,30分鐘未支付。支付超時(shí),自動取消訂單2、訂單簽收,簽收後7天未進(jìn)行評估。訂單超時(shí)未評價(jià),系統(tǒng)預(yù)設(shè)好評3、下單成功,商家5分鐘未接單,訂單取消4、配送超時(shí),推播簡訊提醒…對於延時(shí)比較長的場景、即時(shí)性不高的場景,我們可以採用任務(wù)調(diào)度的方式定時(shí)輪詢處理。如:xxl-job今天我們採</p>
							</div>
														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/553795.html" title="Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表新增怎麼實(shí)現(xiàn)" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/000/887/227/168567524423731.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表新增怎麼實(shí)現(xiàn)" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/553795.html" title="Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表新增怎麼實(shí)現(xiàn)" class="phphistorical_Version2_mids_title">Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表新增怎麼實(shí)現(xiàn)</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">Jun 02, 2023 am	 11:07 AM</span>
								<p class="Articlelist_txts_p">在Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表添加操作我所遇到的問題準(zhǔn)備工作在測試環(huán)境下模擬思維分解一下:創(chuàng)建出一個(gè)帶有參數(shù)的BrandDTO對像模擬對後臺傳遞參數(shù)我所遇到的問題我們都知道,在我們使用Mybatis-plus中進(jìn)行多表操作是極其困難的,如果你不使用Mybatis-plus-join這一類的工具,你只能去配置對應(yīng)的Mapper.xml文件,配置又臭又長的ResultMap,然後再寫對應(yīng)的sql語句,這種方法雖然看上去很麻煩,但具有很高的靈活性,可以讓我們</p>
							</div>
														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/637521.html" title="SpringBoot與SpringMVC的比較及差別分析" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/000/465/014/170381897118822.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="SpringBoot與SpringMVC的比較及差別分析" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/637521.html" title="SpringBoot與SpringMVC的比較及差別分析" class="phphistorical_Version2_mids_title">SpringBoot與SpringMVC的比較及差別分析</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">Dec 29, 2023 am	 11:02 AM</span>
								<p class="Articlelist_txts_p">SpringBoot和SpringMVC都是Java開發(fā)中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個(gè)框架的特點(diǎn)和用途,並對它們的差異進(jìn)行比較。首先,我們來了解一下SpringBoot。 SpringBoot是由Pivotal團(tuán)隊(duì)開發(fā)的,它旨在簡化基於Spring框架的應(yīng)用程式的建立和部署。它提供了一種快速、輕量級的方式來建立獨(dú)立的、可執(zhí)行</p>
							</div>
														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
								<a href="http://www.miracleart.cn/zh-tw/faq/553148.html" title="SpringBoot中的@Import註解怎麼使用" class="phphistorical_Version2_mids_img">
									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/202305/31/2023053118254981970.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="SpringBoot中的@Import註解怎麼使用" />
								</a>
								<a href="http://www.miracleart.cn/zh-tw/faq/553148.html" title="SpringBoot中的@Import註解怎麼使用" class="phphistorical_Version2_mids_title">SpringBoot中的@Import註解怎麼使用</a>
								<span id="377j5v51b"    class="Articlelist_txts_time">May 31, 2023 pm	 06:25 PM</span>
								<p class="Articlelist_txts_p">一、@Import引入普通類別@Import引入普通的類別可以幫助我們把普通的類別定義為Bean。 @Import可以加入在@SpringBootApplication(啟動類別)、@Configuration(配置類別)、@Component(組件類別)對應(yīng)的類別上。注意:@RestController、@Service、@Repository都屬於@Component@SpringBootApplication@Import(ImportBean.class)//透過@Import註解把ImportBean</p>
							</div>
													</div>

													<a href="http://www.miracleart.cn/zh-tw/java/" class="phpgenera_Details_mainL4_botton">
								<span>See all articles</span>
								<img src="/static/imghw/down_right.png" alt="" />
							</a>
											</div>
				</div>
					</div>
	</main>
	<footer>
    <div   id="377j5v51b"   class="footer">
        <div   id="377j5v51b"   class="footertop">
            <img src="/static/imghw/logo.png" alt="">
            <p>公益線上PHP培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!</p>
        </div>
        <div   id="377j5v51b"   class="footermid">
            <a href="http://www.miracleart.cn/zh-tw/about/us.html">關(guān)於我們</a>
            <a href="http://www.miracleart.cn/zh-tw/about/disclaimer.html">免責(zé)聲明</a>
            <a href="http://www.miracleart.cn/zh-tw/update/article_0_1.html">Sitemap</a>
        </div>
        <div   id="377j5v51b"   class="footerbottom">
            <p>
                ? php.cn All rights reserved
            </p>
        </div>
    </div>
</footer>

<input type="hidden" id="verifycode" value="/captcha.html">




		<link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
	
	
	
	
	

	
	






<footer>
<div class="friendship-link">
<p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p>
<a href="http://www.miracleart.cn/" title="国产av日韩一区二区三区精品">国产av日韩一区二区三区精品</a>

<div class="friend-links">


</div>
</div>

</footer>


<script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>
</body><div id="g5se4" class="pl_css_ganrao" style="display: none;"><legend id="g5se4"></legend><fieldset id="g5se4"><s id="g5se4"></s></fieldset><track id="g5se4"></track><mark id="g5se4"><sup id="g5se4"><u id="g5se4"><pre id="g5se4"></pre></u></sup></mark><video id="g5se4"><button id="g5se4"></button></video><rt id="g5se4"></rt><tfoot id="g5se4"><i id="g5se4"></i></tfoot><th id="g5se4"><tbody id="g5se4"><style id="g5se4"><optgroup id="g5se4"></optgroup></style></tbody></th><small id="g5se4"><tr id="g5se4"><tr id="g5se4"><i id="g5se4"></i></tr></tr></small><small id="g5se4"></small><var id="g5se4"><tr id="g5se4"></tr></var><blockquote id="g5se4"><fieldset id="g5se4"><output id="g5se4"><fieldset id="g5se4"></fieldset></output></fieldset></blockquote><strong id="g5se4"></strong><abbr id="g5se4"></abbr><pre id="g5se4"><p id="g5se4"><fieldset id="g5se4"></fieldset></p></pre><i id="g5se4"><ruby id="g5se4"></ruby></i><dfn id="g5se4"><big id="g5se4"><strong id="g5se4"></strong></big></dfn><sup id="g5se4"><tbody id="g5se4"><th id="g5se4"></th></tbody></sup><strong id="g5se4"><u id="g5se4"><progress id="g5se4"></progress></u></strong><button id="g5se4"><progress id="g5se4"><legend id="g5se4"><menu id="g5se4"></menu></legend></progress></button><tr id="g5se4"></tr><optgroup id="g5se4"></optgroup><blockquote id="g5se4"><tbody id="g5se4"><tt id="g5se4"><rp id="g5se4"></rp></tt></tbody></blockquote><progress id="g5se4"></progress><small id="g5se4"></small><optgroup id="g5se4"></optgroup><menuitem id="g5se4"><tr id="g5se4"></tr></menuitem><wbr id="g5se4"></wbr><style id="g5se4"><em id="g5se4"><b id="g5se4"><legend id="g5se4"></legend></b></em></style><tr id="g5se4"><menu id="g5se4"><strong id="g5se4"><var id="g5se4"></var></strong></menu></tr><td id="g5se4"></td><menuitem id="g5se4"><ol id="g5se4"><dfn id="g5se4"><big id="g5se4"></big></dfn></ol></menuitem><track id="g5se4"><tfoot id="g5se4"><optgroup id="g5se4"><center id="g5se4"></center></optgroup></tfoot></track><dd id="g5se4"></dd><dfn id="g5se4"><pre id="g5se4"><var id="g5se4"></var></pre></dfn><ins id="g5se4"></ins><dfn id="g5se4"></dfn><pre id="g5se4"></pre><strong id="g5se4"></strong><i id="g5se4"></i><kbd id="g5se4"><address id="g5se4"><pre id="g5se4"></pre></address></kbd><em id="g5se4"></em><samp id="g5se4"><meter id="g5se4"><div id="g5se4"></div></meter></samp><i id="g5se4"><strong id="g5se4"><button id="g5se4"></button></strong></i><rp id="g5se4"></rp><ul id="g5se4"></ul><acronym id="g5se4"></acronym><kbd id="g5se4"><strike id="g5se4"></strike></kbd><label id="g5se4"><tbody id="g5se4"><tt id="g5se4"></tt></tbody></label><nobr id="g5se4"></nobr><sub id="g5se4"><dd id="g5se4"></dd></sub><output id="g5se4"></output><small id="g5se4"></small><track id="g5se4"><ins id="g5se4"><sup id="g5se4"><li id="g5se4"></li></sup></ins></track><form id="g5se4"><abbr id="g5se4"><tbody id="g5se4"><pre id="g5se4"></pre></tbody></abbr></form><meter id="g5se4"></meter><mark id="g5se4"><wbr id="g5se4"><input id="g5se4"><optgroup id="g5se4"></optgroup></input></wbr></mark><bdo id="g5se4"></bdo><del id="g5se4"></del><ol id="g5se4"><form id="g5se4"><sup id="g5se4"><tbody id="g5se4"></tbody></sup></form></ol><pre id="g5se4"><s id="g5se4"><nobr id="g5se4"><del id="g5se4"></del></nobr></s></pre><ruby id="g5se4"><meter id="g5se4"></meter></ruby><blockquote id="g5se4"><object id="g5se4"><s id="g5se4"></s></object></blockquote><dfn id="g5se4"><kbd id="g5se4"></kbd></dfn><abbr id="g5se4"></abbr><progress id="g5se4"><u id="g5se4"><center id="g5se4"><small id="g5se4"></small></center></u></progress><strong id="g5se4"><small id="g5se4"><b id="g5se4"><tr id="g5se4"></tr></b></small></strong><nav id="g5se4"><strike id="g5se4"></strike></nav><tfoot id="g5se4"></tfoot><sup id="g5se4"></sup><bdo id="g5se4"><nav id="g5se4"></nav></bdo><s id="g5se4"></s><tbody id="g5se4"></tbody><pre id="g5se4"></pre><wbr id="g5se4"><nav id="g5se4"><em id="g5se4"></em></nav></wbr><delect id="g5se4"></delect><u id="g5se4"></u><span id="g5se4"><dl id="g5se4"><var id="g5se4"></var></dl></span><tt id="g5se4"><thead id="g5se4"><legend id="g5se4"></legend></thead></tt><em id="g5se4"></em><pre id="g5se4"></pre><pre id="g5se4"><tfoot id="g5se4"><dl id="g5se4"><strong id="g5se4"></strong></dl></tfoot></pre><menuitem id="g5se4"><label id="g5se4"><dfn id="g5se4"><kbd id="g5se4"></kbd></dfn></label></menuitem><optgroup id="g5se4"><menuitem id="g5se4"><big id="g5se4"></big></menuitem></optgroup><li id="g5se4"><font id="g5se4"><blockquote id="g5se4"><dl id="g5se4"></dl></blockquote></font></li><dd id="g5se4"><sup id="g5se4"><var id="g5se4"></var></sup></dd><ruby id="g5se4"><acronym id="g5se4"></acronym></ruby><listing id="g5se4"></listing><li id="g5se4"></li><xmp id="g5se4"><source id="g5se4"><p id="g5se4"><kbd id="g5se4"></kbd></p></source></xmp><font id="g5se4"></font><em id="g5se4"><pre id="g5se4"></pre></em><dfn id="g5se4"><big id="g5se4"></big></dfn><dl id="g5se4"><var id="g5se4"><optgroup id="g5se4"><ruby id="g5se4"></ruby></optgroup></var></dl><li id="g5se4"></li><del id="g5se4"></del><dfn id="g5se4"><legend id="g5se4"></legend></dfn><table id="g5se4"></table><tfoot id="g5se4"><acronym id="g5se4"><rt id="g5se4"></rt></acronym></tfoot></div>

</html>