目次
1. Tora の紹介:
hiro 関数:
Shiro アーキテクチャ (外部)
2 を実行して開始します。コードを分析します
3. SpringBoot は、Shiro
1 を統合します. テスト環境を作成する
1. ログイン インターセプト
getShiroFilterFactoryBean メソッドにインターセプトする必要があるログイン リクエストを追加します
1. コントローラー層にログイン メソッドを記述します
1.依存関係のインポート
1.変更hiroConfig クラス
ホームページ Java &#&チュートリアル Java で Apache Roku セキュリティ フレームワークを使用する方法

Java で Apache Roku セキュリティ フレームワークを使用する方法

Apr 18, 2023 pm 07:40 PM
java apache shiro

    1. Tora の紹介:

    Apachehiro は Java セキュリティ (権限) フレームワークです。
    Shiro は、JavaSE 環境だけでなく JavaEE 環境でも使用できる十分なアプリケーションを簡単に開発できます。 Shiro は、認証、認可、暗号化、セッション管理、Web 統合、キャッシュなど、すべてを行うことができます。

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    hiro 関数:

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    認証: ID 認証、ログイン、ユーザーが対応する権限を持っているかどうかを確認します。 Identity;
    Authorization: 認可、つまり権限の検証。認証されたユーザーが特定の権限を持っているかどうかを確認します。つまり、ユーザーが任意の操作を実行できるかどうかを判断します。たとえば、ユーザーが特定のロールを持っているかどうかを確認する、または詳細 ユーザーが特定のリソースに対する特定の権限を持っているかどうかを確認します!
    セッション マネージャー: セッション管理、つまりユーザーがログインした後の最初のセッション。終了する前に、そのすべての情報がセッション内にあります。通常の JavaSE 環境であることも、Web 環境であることもできます。
    暗号化: パスワード暗号化やプレーン テキスト ストレージではなくデータベースへの保存など、データのセキュリティを保護するための暗号化。Web サポート: Web サポート、 Web 環境に簡単に統合できます。
    キャッシュ: たとえば、ユーザーがログインした後、ユーザー情報、ロール、権限を毎回確認する必要がなく、効率が向上します。
    同時実行性:Shiro は、マルチスレッド アプリケーションの同時検証をサポートしています。つまり、1 つのスレッドで別のスレッドを開いた場合、権限は自動的に伝達されます。
    テスト: テスト サポートを提供します;
    実行: 1 人のユーザーがふりをすることを許可します別のユーザー (許可されている場合) でアクセスする;
    Remember Me: 私を覚えておいてください、これは非常に一般的な機能です。つまり、一度ログインした後は、次回ログインする必要はありません

    Shiro アーキテクチャ (外部)

    Shiro の外側から、つまり、アプリケーションの観点から、Shiro を使用して作業を完了する方法を観察します:

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    subject: アプリケーション コードが直接対話するオブジェクトは Subject です。これは、Shiro の外部 API のコアが Subject であることを意味し、Subject は現在のユーザーを表します。このユーザーは必ずしも特定の人である必要はありません。現在のユーザーと対話するものはすべて、アプリケーションは、Web クローラー、ロボットなどのサブジェクトです。サブジェクトとのすべての対話は、SecurityManager に委任されます。サブジェクトは、実際にはファサードであり、SecurityManager は実際の実行者です。
    SecurityManager: Security Manager、つまり、セキュリティ関連のすべての操作これは、Shiro のコアであり、SpringMVC の
    DispatcherServlet
    Realm の役割に相当する、Shiro の他のコンポーネントとの対話を担当していることがわかります。 Shiro は Realm からセキュリティ データ (ユーザー、ロール、権限など) を取得します。つまり、SecurityManager はユーザーの ID を確認したいため、ユーザーの ID が正しいかどうかを判断するために、比較のために Realm から対応するユーザーを取得する必要があります。は合法ですが、ユーザーの操作が実行できるかどうかを検証するために、レルムからユーザーに対応するロールと権限を取得する必要もあります。レルムはデータソースとみなすことができます。

    ##Shiro Architecture (内部)

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    件名: アプリケーションと対話できる任意の「ユーザー」;

    セキュリティ マネージャー: SpringMVC の DispatcherServlet に相当; これは、Shiro の中心部で、すべての特定の対話は、すべてのサブジェクトを管理し、認証、認可、セッション、およびキャッシュ管理を担当するセキュリティ マネージャー。

    Authenticator: サブジェクト認証を担当し、拡張ポイントです。実装をカスタマイズできます。認証戦略 (AuthenticationStrategy)、つまり、どのような状況でユーザー認証が通過するか;

    Authorizer: Authorizer、つまり、アクセス コントローラーは、サブジェクトが対応する操作を実行する権限を持っているかどうかを判断するために使用されます。 、ユーザーがアプリケーションでアクセスできる機能を制御します。
    Realm: セキュリティ エンティティ データ ソースと見なすことができる 1 つ以上のレルムが存在できます。つまり、DBC を使用して実装できるセキュリティ エンティティを取得するために使用されます。実装等はユーザーが行うため、一般的にアプリケーションでは独自のレルム
    SessionManager:セッションのライフサイクルを管理するコンポーネントを実装する必要があり、ShiroはWeb環境だけで利用できるわけではありません
    CacheManager: ユーザー、ロール、権限などのキャッシュを管理するキャッシュ コントローラー。これらのデータはめったにアクセスされないため、キャッシュされた後にアクセス パフォーマンスを向上させることができます。
    暗号化: 暗号動物学モジュール、Shiro はパスワード暗号化、復号化などのいくつかの一般的な暗号化コンポーネントを改善しました。

    2. クイック スタート

    1. ケースをコピーします

    1. 以下に従ってください。公式 Web サイトでは、クイック スタート ケースの GitHub アドレスを見つけるように求められます: hiro/samples/quickstart/

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    #2. 新しい Maven プロジェクトを作成し、その src ディレクトリを削除して、それを使用します。親プロジェクトとして

    3. 親プロジェクトに新しい Maven モジュールを作成します

    4. クイック スタート ケースの POM.xml ファイルに依存関係をコピーします

    <dependencies>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-core</artifactId>
                <version>1.4.1</version>
            </dependency>
     
            <!-- configure logging -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>1.7.29</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.29</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
        </dependencies>
    ログイン後にコピー

    5. クイック スタート ケースのリソースの下にある log4j.properties をコピーします

    6. hiro.ini ファイルをコピーします

    7. Quickstart.java ファイルをコピーします

    8. Quickstart.java

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    2 を実行して開始します。コードを分析します

    public class Quickstart {
        private static final transient Logger log = LoggerFactory.getLogger(Quickstart.class);
        public static void main(String[] args) {
            //工厂模式,通过shiro.ini配置文件中的信息,生成一个工厂实例
            Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
            SecurityManager securityManager = factory.getInstance();
            SecurityUtils.setSecurityManager(securityManager);
            //获取当前的用户对象Subject
            Subject currentUser = SecurityUtils.getSubject();
            //通过当前用户拿到session
            Session session = currentUser.getSession();
            session.setAttribute("someKey", "aValue");
            String value = (String) session.getAttribute("someKey");
            if (value.equals("aValue")) {
                log.info("Subject=>session[" + value + "]");
            }
            //判断当前的用户是否被认证
            if (!currentUser.isAuthenticated()) {
                //Token :令牌,没有获取,随机
                UsernamePasswordToken token = new UsernamePasswordToken("lonestarr", "vespa");
                token.setRememberMe(true);  //设置记住我
                try {
                    currentUser.login(token); //执行了登录操作
                } catch (UnknownAccountException uae) {
                    //如果   用户名不存在
                    log.info("There is no user with username of " + token.getPrincipal());
                } catch (IncorrectCredentialsException ice) {
                    //如果   密码不正确
                    log.info("Password for account " + token.getPrincipal() + " was incorrect!");
                } catch (LockedAccountException lae) {
                    //用户被锁定,如密码输出过多,则被锁定
                    log.info("The account for username " + token.getPrincipal() + " is locked.  " +
                            "Please contact your administrator to unlock it.");
                }
                //...在此处捕获更多异常
                catch (AuthenticationException ae) {
                    //意外情况 ? 错误 ?
                }
            }
            //打印其标识主体(在这种情况下,为用户名)
            log.info("User [" + currentUser.getPrincipal() + "] logged in successfully.");
     
            //测试角色是否存在
            if (currentUser.hasRole("schwartz")) {
                log.info("May the Schwartz be with you!");
            } else {
                log.info("Hello, mere mortal.");
            }
            //粗粒度,极限范围小
            //测试类型化的极限(不是实例级别)
            if (currentUser.isPermitted("lightsaber:wield")) {
                log.info("You may use a lightsaber ring.  Use it wisely.");
            } else {
                log.info("Sorry, lightsaber rings are for schwartz masters only.");
            }
            //细粒度,极限范围广
            //实例级别的权限(非常强大)
            if (currentUser.isPermitted("winnebago:drive:eagle5")) {
                log.info("You are permitted to &#39;drive&#39; the winnebago with license plate (id) &#39;eagle5&#39;.  " +
                        "Here are the keys - have fun!");
            } else {
                log.info("Sorry, you aren&#39;t allowed to drive the &#39;eagle5&#39; winnebago!");
            }
            //注销
            currentUser.logout();
            //退出
            System.exit(0);
        }
    }
    ログイン後にコピー

    3. SpringBoot は、Shiro

    1 を統合します. テスト環境を作成する

    #1. 親プロジェクトに新しい springboot モジュールを作成します

    Java で Apache Roku セキュリティ フレームワークを使用する方法#2. SpringBoot と Roku 統合パッケージの依存関係をインポートします

     <!--SpringBoot 和 Shiro 整合包-->
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-spring</artifactId>
                <version>1.4.1</version>
            </dependency>
    ログイン後にコピー

    以下は、設定ファイルを記述するための 3 つの主要な要素です

    Shiro


    対象ユーザー ->ShiroFilterFactoryBean
    SecurityManager はすべてのユーザーを管理します->DefaultWebSecurityManager

    Realm接続データ

    実際の操作でのオブジェクト作成の順序: レルム -> securityManager -> subject

    3. AuthorizingRealm

    を継承する必要があるカスタム レルムを作成します。
    //自定义的 UserRealm        extends AuthorizingRealm
    public class UserRealm extends AuthorizingRealm {
        //授权
        @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
            //打印一个提示
            System.out.println("执行了授权方法");
            return null;
        }
     
        //认证
        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
            //打印一个提示
            System.out.println("执行了认证方法");
            return null;
        }
    }
    ログイン後にコピー

    4. 新しい A TaroConfig 構成ファイルを作成します

    @Configuration
    public class ShiroConfig {
     
        //ShiroFilterFactoryBean:3
        @Bean
        public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebsecurityManager){
            ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
            //设置安全管理器
            bean.setSecurityManager(defaultWebsecurityManager);
            return bean;
        }
        //DefaultWebSecurityManager:2
        @Bean(name="securityManager")
        public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
            DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager();
            //关闭UserRealm
            securityManager.setRealm(userRealm);
            return securityManager;
        }
        //创建realm 对象,需要自定义类:1
        @Bean(name="userRealm")
        public UserRealm userRealm(){
            return new UserRealm();
        }
    }
    ログイン後にコピー

    5. テストは成功しました。

    Java で Apache Roku セキュリティ フレームワークを使用する方法2. 使用

    1. ログイン インターセプト

    getShiroFilterFactoryBean メソッドにインターセプトする必要があるログイン リクエストを追加します
    @Configuration
    public class ShiroConfig {
     
        //ShiroFilterFactoryBean:3
        @Bean
        public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebsecurityManager){
            ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
            //设置安全管理器
            bean.setSecurityManager(defaultWebsecurityManager);
            //添加shiro的内置过滤器
            /*
                anon : 无需认证,就可以访问
                authc : 必须认证了才能访问
                user : 必须拥有 “记住我” 功能才能用
                perms : 拥有对某个资源的权限才能访问
                role : 拥有某个角色权限才能访问
             */
     
            filterMap.put("/user/add","authc");
            filterMap.put("/user/update","authc");
            //拦截
            Map<String,String> filterMap=new LinkedHashMap<>();
            filterMap.put("/user/*","authc");
            bean.setFilterChainDefinitionMap(filterMap);
     
    //        //设置登录的请求
    //        bean.setLoginUrl("/toLogin");
            return bean;
        }
    ログイン後にコピー

    テスト: 追加リンクをクリックすると、追加ページではなくログイン ページにジャンプします。インターセプトは成功しました

    Java で Apache Roku セキュリティ フレームワークを使用する方法2. ユーザー認証

    1. コントローラー層にログイン メソッドを記述します
    //登录的方法
        @RequestMapping("/login")
        public String login(String username, String password, Model model) {
            //获取当前用户
            Subject subject = SecurityUtils.getSubject();
            //封装用户的登录数据,获得令牌
            UsernamePasswordToken token = new UsernamePasswordToken(username, password);
            //登录 及 异常处理
            try {
                //执行用户登录的方法,如果没有异常就说明OK了
                subject.login(token);
                return "index";
            } catch (UnknownAccountException e) {
                //如果用户名不存在
                System.out.println("用户名不存在");
                model.addAttribute("msg", "用户名错误");
                return "login";
            } catch (IncorrectCredentialsException ice) {
                //如果密码错误
                System.out.println("密码错误");
                model.addAttribute("msg", "密码错误");
                return "login";
            }
        }
    }
    ログイン後にコピー

    2. Test

    Java で Apache Roku セキュリティ フレームワークを使用する方法カスタム UserRealm に AuthenticationInfo メソッドがあることがわかります。最初に実行され、その後、ログイン関連の操作を実行します。

    3. UserRealm の doGetAuthenticationInfo メソッドを変更します。

    //认证
        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
            //打印一个提示
            System.out.println("执行了认证方法");
            // 用户名密码
            String name = "root";
            String password = "123456";
            //通过参数获取登录的控制器中生成的 令牌
            UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
            //用户名认证
            if (!token.getUsername().equals(name)){
                // return null UnKnownAccountException
                return null;
            }
            //密码认证, Shiro 自己做,为了避免和密码的接触
            //最后返回一个 AuthenticationInfo 接口的实现类,这里选择 SimpleAuthenticationInfo
            // 三个参数:获取当前用户的认证 ; 密码 ; 认证名
            return new SimpleAuthenticationInfo("", password, "");
        }
    }
    ログイン後にコピー

    4. テストして、間違ったパスワードを入力します

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    Java で Apache Roku セキュリティ フレームワークを使用する方法正しいパスワードを入力して正常にログインしてください

    4.Shiro は Mybatis を統合します

    1.依存関係のインポート

    <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.19</version>
            </dependency>
     
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
     
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.12</version>
            </dependency>
           <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.1</version>
            </dependency>
    ログイン後にコピー

    2. 新しいアプリケーションを作成します .yml

    spring:
      datasource:
        username: root
        password: 123456
        url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
     
        #Spring Boot 默认是不注入这些属性值的,需要自己绑定
        #druid 数据源专有配置
        initialSize: 5
        minIdle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
     
        #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
        #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
        #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
        filters: stat,wall,log4j
        maxPoolPreparedStatementPerConnectionSize: 20
        useGlobalDataSourceStat: true
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
    mybatis:
      type-aliases-package: com.huang.pojo
      mapper-locations: classpath:mybatis/mapper/*.xml
    ログイン後にコピー

    3.application.propertiesで

    mybatis.type-aliases-package=com.longdi.pojo
    mybatis.mapper-locations=classpath:mapper/*.xml
    ログイン後にコピー

    4.依存関係をインポート

    <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.10</version>
                <scope>provided</scope>
            </dependency>
    ログイン後にコピー

    5.Write User class

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
            private int id;
            private String name;
            private String pwd;
            private String perms;
    }
    ログイン後にコピー

    6. UserMapper の書き込み

    @Repository
    @Mapper
    public interface UserMapper {
        public User  queryUserByName(String name);
     
    }
    ログイン後にコピー

    7. UserMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     
    <mapper namespace="com.longdi.mapper.UserMapper">
     
        <select id="queryUserByName" resultType="User" parameterType="String">
            select * from mybatis.user where name=#{name}
        </select>
     
    </mapper>
    ログイン後にコピー

    の書き込み8. サービス層

    UserService インターフェイス:

    public interface UserService {
        public User queryUserByName(String name);
    }
    ログイン後にコピー

    9. インターフェイスの書き込み実装クラス UserServiceImpl

    @Service
    public class UserServiceImpl implements UserService{
     
        @Autowired
        UserMapper userMapper;
     
        @Override
        public User queryUserByName(String name) {
            return userMapper.queryUserByName(name);
        }
    }
    ログイン後にコピー

    10.ShiroSpringbootApplicationTests

    @SpringBootTest
    class ShiroSpringbootApplicationTests {
        @Autowired
        UserServiceImpl userService;
        @Test
        void contextLoads() {
            System.out.println(userService.queryUserByName("longdi"));
        }
    }
    ログイン後にコピー

    11.データベースへの接続成功

    5.リクエスト認可の実装

    1.変更hiroConfig クラス

    Java で Apache Roku セキュリティ フレームワークを使用する方法2. コントローラー ジャンプ

    Java で Apache Roku セキュリティ フレームワークを使用する方法3. ログイン インターセプト承認、テスト成功

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    Java で Apache Roku セキュリティ フレームワークを使用する方法4. 認可 doGetAuthorizationInfo メソッドを作成します

    ##5. 認可テストのリクエストが成功しましたJava で Apache Roku セキュリティ フレームワークを使用する方法

    6.Shiro は Thymeleaf を統合

    1.依存関係をインポート

    <!--shiro和thymeleaf整合-->
            <dependency>
                <groupId>com.github.theborakompanioni</groupId>
                <artifactId>thymeleaf-extras-shiro</artifactId>
                <version>2.0.0</version>
            </dependency>
    ログイン後にコピー
    2.ShiroDialect を統合

    ##3.index.html

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    4. テスト

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    5. セッション

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    を挿入します。 6. インデックスを変更します。html

    Java で Apache Roku セキュリティ フレームワークを使用する方法

    以上がJava で Apache Roku セキュリティ フレームワークを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

    Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

    未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

    Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

    カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

    カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

    Java をシンプルに: プログラミング能力を高める初心者向けガイド Java をシンプルに: プログラミング能力を高める初心者向けガイド Oct 11, 2024 pm 06:30 PM

    Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

    ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? Apr 01, 2025 pm 02:48 PM

    多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

    Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Feb 07, 2025 pm 12:11 PM

    Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。

    スタックの下部に要素を挿入するJavaプログラム スタックの下部に要素を挿入するJavaプログラム Feb 07, 2025 am 11:59 AM

    スタックは、LIFO(最後の、最初のアウト)の原則に従うデータ構造です。言い換えれば、スタックに最後に追加する要素は、削除される最初の要素です。要素をスタックに追加(またはプッシュ)すると、それらは上に配置されます。つまり、とりわけ

    H5プロジェクトの実行方法 H5プロジェクトの実行方法 Apr 06, 2025 pm 12:21 PM

    H5プロジェクトを実行するには、次の手順が必要です。Webサーバー、node.js、開発ツールなどの必要なツールのインストール。開発環境の構築、プロジェクトフォルダーの作成、プロジェクトの初期化、コードの書き込み。開発サーバーを起動し、コマンドラインを使用してコマンドを実行します。ブラウザでプロジェクトをプレビューし、開発サーバーURLを入力します。プロジェクトの公開、コードの最適化、プロジェクトの展開、Webサーバーの構成のセットアップ。

    See all articles