20210730のJavaに関する記事は6件です。

Webコンテンツの備忘録

index.jsp /* * タイトル:システム名 * 説明 :△△△ * * 著作権 :Copyright(c) 2013 * 会社名 :◯◯◯ * * 変更履歴:2013.05.18 新規作成 * */ package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import beans.CategoryBean; import controller.businessController; import controller.createControllers; import dao.CategoryDAO; /** * 業務振り分け(業務ディスパッチャ) * * @author 作成者名 * @version 1.0 * */ @WebServlet("/Shopping") public class ShoppingServlet extends HttpServlet { /** 業務コントローラのリスト : actionパラメタ値をキーに業務コントローラをHashMapから取得し、業務処理を委譲、出力処理をJSPにフォワードする */ private HashMap<String, businessController> controllerList; /** * servlet窓口(GETアクション) * * @param request HTTPリクエスト * @param response HTTPレスポンス * @see <a href="http://mergedoc.sourceforge.jp/tomcat-servletapi-5-ja/" target="_blank">javax.servlet.http</a> * @see controller.createControllers 業務コントローラの生成 * @exception IOException サーブレット・コンテナ内のソケットやストリーム処理で発生する可能性がある * @exception ServletException サーブレット内で発生する可能性がある * */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardURL; request.setCharacterEncoding("UTF-8"); // リクエストパラメータの読み込み String action = request.getParameter("action"); if ( action == null ) { // actionãƒ‘ãƒ©ãƒ¡ã‚¿ãŒå–å¾—ã§ããªã„å ´åˆã¯ action = "top"; // top画面を表示する } // 業務の振り分け if ( controllerList.containsKey(action) ) { // actionã«è©²å½“ã™ã‚‹æ¥­å‹™ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãŒã‚ã‚‹å ´åˆ businessController controller = controllerList.get(action); // 該当する業務コントローラを取得 forwardURL = controller.execService(request, response); // 業務コントローラに処理を委譲しフォワードするJSPのURLを取得する RequestDispatcher rd = request.getRequestDispatcher(forwardURL); // ディスパッチャーを取得 rd.forward(request, response); // 出力処理をJSPに委譲(フォワード) } else { RequestDispatcher rd = request.getRequestDispatcher("/top.jsp"); // actionãƒ‘ãƒ©ãƒ¡ã‚¿å€¤ãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯é·ç§»ã‚¨ãƒ©ãƒ¼ãƒšãƒ¼ã‚¸ã‚’è¡¨ç¤º rd.forward(request, response); } } /** * servlet窓口(POSTアクション) * doGET()に委譲 * * @param request HTTPリクエスト * @param response HTTPレスポンス * @see <a href="http://mergedoc.sourceforge.jp/tomcat-servletapi-5-ja/" target="_blank">javax.servlet.http</a> * @exception IOException サーブレット・コンテナ内のソケットやストリーム処理で発生する可能性がある * @exception ServletException サーブレット内で発生する可能性がある * */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } /** * servletの初期処理(オーバーライド) * servletが読み込まれたときに動作する * データベースからカテゴリ一覧を取得しアプリケーションスコープで登録する * 全ての業務コントローラをservletのメンバに登録する * * @see <a href="http://mergedoc.sourceforge.jp/tomcat-servletapi-5-ja/" target="_blank">javax.servlet.http</a> * @exception ServletException サーブレット内で発生する可能性がある * */ public void init() throws ServletException { // ã‚«ãƒ†ã‚´ãƒªä¸€è¦§ã‚’å–å¾—ã—ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚¹ã‚³ãƒ¼ãƒ—ã¸æ ¼ç´ CategoryDAO dao = new CategoryDAO(); List<CategoryBean> categories = null; try { categories = dao.getAll(); } catch(SQLException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } getServletContext().setAttribute("categories", categories); // 業務コントローラをmapに登録 controllerList = new createControllers().newControllers(); } } CreateControllers.java package controller; import java.util.HashMap; public class CreateControllers { public HashMap<String,"Name"Controller> newControllers(){ HashMap<String,"Name"Controller> map = new HashMap<String,"Name"Controller>(); "Name"Controller "name"Obj = new "Name"Controller(); map.put("action_param", "name"Obj ); return map; } } servlet.java package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class 'Name'Servlet extends HttpServlet { private HashMap <String,'Name'Controller> controllerList; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String forwardURL; request.setCharacterEncoding("UTF-8"); String action = request.getParameter("action"); //actionパラメータ取得不可の場合 if ( action == null ) { action = "top"; } // 振り分け //actionに業務コントローラがあるとき if ( controllerList.containsKey(action) ) { //該当する業務コントローラを取得 'Name'Controller controller = controllerList.get(action); forwardURL = controller.execService(request, response); RequestDispatcher rd = request.getRequestDispatcher(forwardURL); rd.forward(request, response); } else { RequestDispatcher rd = request.getRequestDispatcher("/index.jsp"); rd.forward(request, response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } public void init() throws ServletException { 'Name'DAO dao = new 'Name'DAO(); List<'Name'Bean> 'name's = null; try { 'name's = dao.getAll(); } catch(SQLException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } getServletContext().setAttribute("calendars", calendars); controllerList = new CreateControllers().newControllers(); } } baseDAO.java import java.sql.DriverManager; import java.sql.Connection; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ResourceBundle; import java.util.MissingResourceException; import beans.*; abstract public class baseDAO { protected Connection getConnection() throws SQLException, ClassNotFoundException, MissingResourceException { Connection con = null; ResourceBundle bundle; String url; String host; String db; String encoding; String user; String pass; /* web.xmlの<context-param>からデータベース情報を取得する場合 <web.xml>の例 <context-param> <param-name>DBname</param-name> <param-value>shopdb</param-value> <param-name>Encoding</param-name> <param-value>SJIS</param-value> <param-name>DBuser</param-name> <param-value>root</param-value> <param-name>Password</param-name> <param-value>root</param-value> </context-param> ↓thisではダメ、servletの参照をもらう必要あり ServletContext context = this.getServletContext(); db = context.getInitParameter("DBname"); encoding = context.getInitParameter("Encoding"); user = context.getInitParameter("DBuser"); pass = context.getInitParameter("Password"); */ /* プロパティファイルからデータベース接続情報を取得する場合 <classes/Sample.properties>の例 DBname=sampledb Encoding=SJIS DBuser=root Password=root bundle = ResourceBundle.getBundle("Sample"); db = bundle.getString("DBname"); encoding = bundle.getString("Encoding"); user = bundle.getString("DBuser"); pass = bundle.getString("Password"); */ bundle = ResourceBundle.getBundle("Sample"); host = bundle.getString("Host"); db = bundle.getString("DBname"); encoding = bundle.getString("Encoding"); user = bundle.getString("DBuser"); pass = bundle.getString("Password"); url = "jdbc:mysql://" + host + "/" + db + "?useUnicode=true&characterEncoding=" + encoding; // データベースに接続しコネクションを取得する Class.forName("com.mysql.jdbc.Driver"); // JDBCドライバの登録 con = DriverManager.getConnection(url, user, pass); // データベースへの接続 con.setAutoCommit(false); // 自動コミットの解除(トランザクション管理する) return con; } protected void startTransaction(Connection con) throws SQLException { // Statementオブジェクトの取得 Statement stmt = con.createStatement(); // トランザクションの開始 stmt.execute("START TRANSACTION"); } protected void releaseDB(Connection con) { try { // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, Statement stmt) { try { // リソースの開放 if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, PreparedStatement stmt) { try { // リソースの開放 if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, Statement stmt, ResultSet result) { try { // リソースの開放 if (result != null) { result.close(); } if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, PreparedStatement stmt, ResultSet result) { try { // リソースの開放 if (result != null) { result.close(); } if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

自分用Webコンテンツコピペ

bC.java package controller; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.sql.SQLException; abstract public class businessController { protected businessController() { } abstract public String execService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; ; } package controller; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import beans.CategoryBean; import beans.ItemBean; import beans.reviewBean; import dao.CategoryDAO; import dao.ItemDAO; import dao.reviewDAO; final public class ItemController extends businessController { //コンストラクタ protected ItemController() { } public String execService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 出力用JSPのURLにエラー表示JSP(デフォルト値)を設定 String forwardURL = "/error.jsp"; // リクエストパラメータの読み込み String action = request.getParameter("action"); // action パラメータの値によって、処理を振り分け(メソッド呼び出し)戻り値の出力用JSPのURLを設定 try { if ( action.equals("list") ) forwardURL = showAllItems(request, response); else if ( action.equals("itemList") ) forwardURL = showItems(request, response); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return forwardURL; } //商品一覧を取得する private String showAllItems(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException { String forwardURL = "/list.jsp"; String code = request.getParameter("code"); int categoryCode = Integer.parseInt(code); ItemDAO dao = new ItemDAO(); List<ItemBean> items = dao.getCategoryItem(categoryCode); request.setAttribute("status", code); request.setAttribute("items", items); return forwardURL; } //商品管理画面を表示する private String showItems(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException { String forwardURL = "/itemList.jsp"; String category = request.getParameter("category"); try{ List<ItemBean> list = null; ItemDAO dao = new ItemDAO(); if (category == null || category.equals("all")){ list = dao.getAllItem(); }else { int iCategory = Integer.parseInt(category); list = dao.getCategoryItem(iCategory); CategoryDAO cdao = new CategoryDAO(); CategoryBean cbean = cdao.getCategory(iCategory); request.setAttribute("category", cbean); } if ( list == null ) { request.setAttribute( "message", "存在しないカテゴリーを指定しました。"); } else { request.setAttribute("itemList", list); } } catch (NumberFormatException e) { request.setAttribute( "message", "é€ä¿¡ã•ã‚ŒãŸæƒ…å ±ã«å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸ"); forwardURL = "/kanrierror.jsp"; } return forwardURL; } } CreateControllers.java /* * タイトル:システム名 * 説明 :△△△ * * 著作権 :Copyright(c) 2013 * 会社名 :◯◯◯ * * 変更履歴:2013.05.18 新規作成 * */ package controller; import java.util.HashMap; /** * 業務コントローラの生成 * 各業務コントローラをmapに登録する<br> * mapのキーはfromのactionパラメタ値<br> * * @author 作成者名 * @version 1.0 * */ public class createControllers { /** * 業務コントローラの登録<br> * 本システムでは業務コントローラ自信が値やオブジェクトを保持する必要がないので * HasuMapリストにformのactionパラメタ値をキーに * 業務コントローラのインスタンスを登録する。<br> * (ShoppingServletにより、actionパラメタ値に該当する業務コントローラを起動する) * * @return 業務コントローラリスト(HashMap) * @see <a href="http://docs.oracle.com/javase/jp/7/api/index.html?java/util/HashMap.html" target="_blank">java.util.HasuMap</a> * */ public HashMap<String, businessController> newControllers() { HashMap<String, businessController> map = new HashMap<String, businessController>(); businessController orderObj = new OrderController(); businessController categoryObj = new CategoryController(); businessController itemObj = new ItemController(); //map.put( "キーワード(actionのパラメタ値)", new xxxController() ); // ◯◯コントローラ map.put( "top", new TopController() ); // トップ画面コントローラ map.put( "showCart", orderObj ); // 注文コントローラ(カート表示) map.put( "addCart", orderObj ); // 注文コントローラ(商品追加) map.put( "deleteCart", orderObj ); // 注文コントローラ(商品削除) map.put( "customerInfo", orderObj ); // 注文コントローラ(顧客情報入力) map.put( "comfirm", orderObj ); // 注文コントローラ(注文内容確認) map.put( "order", orderObj ); // 注文コントローラ(注文確定) map.put( "settlement", orderObj ); // 注文コントローラ(売上集計) map.put( "category", categoryObj ); // カテゴリコントローラ(カテゴリ一覧表示) map.put( "addCategory", categoryObj ); // カテゴリコントローラ(カテゴリ追加) map.put( "modifyCategory", categoryObj ); // カテゴリコントローラ(カテゴリ変更) map.put( "deleteCategory", categoryObj ); // カテゴリコントローラ(カテゴリ削除) map.put( "list", itemObj ); // 商品コントローラ(商品一覧表示) map.put( "itemList", itemObj ); // 商品コントローラ(商品一覧表示) map.put( "itemDetail", itemObj ); // 商品コントローラ(商品詳細表示) map.put( "addItem", itemObj ); // 商品コントローラ(商品追加) map.put( "modifyItem", itemObj ); // 商品コントローラ(商品変更) map.put( "deleteItem", itemObj ); // 商品コントローラ(商品削除) return map; } } servlet.java /* * タイトル:システム名 * 説明 :△△△ * * 著作権 :Copyright(c) 2013 * 会社名 :◯◯◯ * * 変更履歴:2013.05.18 新規作成 * */ package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import beans.CategoryBean; import controller.businessController; import controller.createControllers; import dao.CategoryDAO; @WebServlet("/Shopping") public class ShoppingServlet extends HttpServlet { /** 業務コントローラのリスト : actionパラメタ値をキーに業務コントローラをHashMapから取得し、業務処理を委譲、出力処理をJSPにフォワードする */ private HashMap<String, businessController> controllerList; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardURL; request.setCharacterEncoding("UTF-8"); // リクエストパラメータの読み込み String action = request.getParameter("action"); if ( action == null ) { // actionãƒ‘ãƒ©ãƒ¡ã‚¿ãŒå–å¾—ã§ããªã„å ´åˆã¯ action = "top"; // top画面を表示する } // 業務の振り分け if ( controllerList.containsKey(action) ) { // actionã«è©²å½“ã™ã‚‹æ¥­å‹™ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãŒã‚ã‚‹å ´åˆ businessController controller = controllerList.get(action); // 該当する業務コントローラを取得 forwardURL = controller.execService(request, response); // 業務コントローラに処理を委譲しフォワードするJSPのURLを取得する RequestDispatcher rd = request.getRequestDispatcher(forwardURL); // ディスパッチャーを取得 rd.forward(request, response); // 出力処理をJSPに委譲(フォワード) } else { RequestDispatcher rd = request.getRequestDispatcher("/top.jsp"); // actionãƒ‘ãƒ©ãƒ¡ã‚¿å€¤ãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯é·ç§»ã‚¨ãƒ©ãƒ¼ãƒšãƒ¼ã‚¸ã‚’è¡¨ç¤º rd.forward(request, response); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void init() throws ServletException { // ã‚«ãƒ†ã‚´ãƒªä¸€è¦§ã‚’å–å¾—ã—ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚¹ã‚³ãƒ¼ãƒ—ã¸æ ¼ç´ CategoryDAO dao = new CategoryDAO(); List<CategoryBean> categories = null; try { categories = dao.getAll(); } catch(SQLException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } getServletContext().setAttribute("categories", categories); // 業務コントローラをmapに登録 controllerList = new createControllers().newControllers(); } } baseDAO.java import java.sql.DriverManager; import java.sql.Connection; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ResourceBundle; import java.util.MissingResourceException; import beans.*; abstract public class baseDAO { protected Connection getConnection() throws SQLException, ClassNotFoundException, MissingResourceException { Connection con = null; ResourceBundle bundle; String url; String host; String db; String encoding; String user; String pass; /* web.xmlの<context-param>からデータベース情報を取得する場合 <web.xml>の例 <context-param> <param-name>DBname</param-name> <param-value>shopdb</param-value> <param-name>Encoding</param-name> <param-value>SJIS</param-value> <param-name>DBuser</param-name> <param-value>root</param-value> <param-name>Password</param-name> <param-value>root</param-value> </context-param> ↓thisではダメ、servletの参照をもらう必要あり ServletContext context = this.getServletContext(); db = context.getInitParameter("DBname"); encoding = context.getInitParameter("Encoding"); user = context.getInitParameter("DBuser"); pass = context.getInitParameter("Password"); */ /* プロパティファイルからデータベース接続情報を取得する場合 <classes/Sample.properties>の例 DBname=sampledb Encoding=SJIS DBuser=root Password=root bundle = ResourceBundle.getBundle("Sample"); db = bundle.getString("DBname"); encoding = bundle.getString("Encoding"); user = bundle.getString("DBuser"); pass = bundle.getString("Password"); */ bundle = ResourceBundle.getBundle("Sample"); host = bundle.getString("Host"); db = bundle.getString("DBname"); encoding = bundle.getString("Encoding"); user = bundle.getString("DBuser"); pass = bundle.getString("Password"); url = "jdbc:mysql://" + host + "/" + db + "?useUnicode=true&characterEncoding=" + encoding; // データベースに接続しコネクションを取得する Class.forName("com.mysql.jdbc.Driver"); // JDBCドライバの登録 con = DriverManager.getConnection(url, user, pass); // データベースへの接続 con.setAutoCommit(false); // 自動コミットの解除(トランザクション管理する) return con; } protected void startTransaction(Connection con) throws SQLException { // Statementオブジェクトの取得 Statement stmt = con.createStatement(); // トランザクションの開始 stmt.execute("START TRANSACTION"); } protected void releaseDB(Connection con) { try { // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, Statement stmt) { try { // リソースの開放 if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, PreparedStatement stmt) { try { // リソースの開放 if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, Statement stmt, ResultSet result) { try { // リソースの開放 if (result != null) { result.close(); } if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } protected void releaseDB(Connection con, PreparedStatement stmt, ResultSet result) { try { // リソースの開放 if (result != null) { result.close(); } if (stmt != null) { stmt.close(); } // 接続の開放 if (con != null) { con.close(); } } catch (SQLException e) { } } }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Win10命令行快速安装JDK环境

[TOC] #主要内容 用scoop包管理自动下载安装jdk,自动配置环境,一键安装(把里面命令跑一遍就行了)♂ #需要工具 Powershell(自带可) https://docs.microsoft.com/zh-cn/powershell/ 包管理命令行工具 Scoop (命令行安装) https://github.com/lukesampson/scoop #安装包管理工具Scoop 1.配置Scoop本体安装路径 ·(Win10)按下Crl+X,点击 Windows Powershell ,打开Powershell · 然后执行下面步骤的代码配置 Scoop命令行程序 的安装路径 $env:SCOOP='D:\Applications\Scoop' #修改这里,配置Scoop安装路径 [Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User') # run the installer 2.配置通过Scoop下载安装软件的路径 $env:SCOOP_GLOBAL='F:\GlobalScoopApps' #修改这里,配置安装软件的路径 [Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine') # run the installer 3.安装Scoop Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') #用Scoop包管理安装JDK ←完成 · 首先搜索JDK scoop search jdk · 添加java的源(bucket),选择一个版本的JDK安装, scoop bucket add java scoop instsall microsoft-jdk (16.0.1.9.1) #把搜索出来的JDK版本名称复制到这里,回车即可 · 等待结束,完成。不需要再手动配置环境变量,已经全部配置好了♂
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SpringBootにおけるレイアウト

本日の内容 レイアウト機能を用いて画面を構成するため必要な知識の備忘録 Thymeleafのレイアウト機能を用いて完成させる 共通レイアウトとしてヘッダー、フッター、サイドバーを用意し、個別画面の内容を出力する レイアウト機能を利用した画面は保守性、拡張性に優れている 画面イメージ レイアウト画面について レイアウトのhtmlにレイアウトとして使用するという宣言をする ヘッダー、フッター、サイドバー、コンテンツのスペースを確保するイメージ <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" th:fragment="layout(body)"> <head> <meta charset="UTF-8"> <link th:href="@{/css/layout.css}" rel="stylesheet"> <title>Insert title here</title> </head> <body> <div th:replace="~{header::layout-header}"></div> <div> <div th:replace="~{sidebar::layout-sidebar}"></div> <div id="main" th:replace="${body}"></div> </div> <div th:replace="~{footer::layout-footer}"></div> </body> </html> テンプレートを実装するにあたって th:fragment属性を記述→このHTMLをテンプレートとして使用するという宣言 fragment(フラグメント)→そのデータを識別する名前 th:fragment="layout(body)"→layoutという名前を付けて、そのテンプレートに個別画面のbodyの内容を埋め込む th:replace属性→共通部品の埋め込み先となるタグを記述する <タグ名 th:replace=~{ファイルのパス名 :: フラグメント名}">で記述 ファイルのパス名→templatesフォルダを起点としたファイル名(拡張子は除く) フラグメント名にはth:fragmentで設定した名前を記述 コンテンツ画面を埋め込む場所にはth:replace="${取得する情報の範囲}" 共通部品(ヘッダー、フッター、サイドバー)にそれぞれ名前をつける ヘッダー <div id="header" th:fragment="layout-header">ヘッダー</div> フッター <div id="footer" th:fragment="layout-footer">フッター</div> サイドバー <div id="sidebar" th:fragment="layout-sidebar">サイドバー</div> コンテンツ画面(テンプレートのメインに埋め込む画面) <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" th:replace="~{layout::layout(~{::body/content()})}"> <head> <meta charset="UTF-8"> <link th:href="@{/css/layout.css}" rel="stylesheet"> <title>Insert title here</title> </head> <body id="main"> <div>コンテンツ内容</div> </body> </html> コンテンツ画面にはth:replace="~{テンプレートのパス::フラグメント名(~{::コンテンツ画面から取得される情報の範囲})}"のように記載をする th:replace="~{layout::layout(~{::body/content()})}"→layout.htmlに対して、コンテンツ画面(index.html)のbodyタグの内容を埋め込んでいる bodyの後の/content()はbodyタグ内のコンテンツを取得するという意味 装飾 div#header { background-color: red; height: 100px; } div#sidebar { background-color: yellow; float: left; height: 300px; width: 200px; } div#main { float: left; height: 300px; } div#footer { background-color: green; clear: left; height: 100px; } ふりかえり thymeleafの機能を利用すれば比較的観点にレイアウト機能を実装できる 一度レイアウトの枠組みを作ってしまえば、あとは個別のコンテンツ画面を作るだけでいいので、ページ作成の効率化になる
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Javaの外部ライブラリーが動かない!

Java初心者による備忘録 Javaを独学している際に、躓いた点を記述しておきます。 外部ライブラリーの利用の注意点 外部の*.jarファイルのライブラリーを利用したい*.javaファイルと同じフォルダにコピーするだけでは利用できない。クラスパスの設定をしなくてはいけないからだ。さらに、クラスパスを指定する際に、\path\*.jarのように*.jarファイルを直接指定しないといけない。 クラスパスの指定 javacやjavaコマンド実行時に -cpオプションとをつける。 環境変数CLASSPATHに宣言する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Java独習(第5章前半)

Java独習5章 -標準ライブラリ- ・ラッパークラス ・文字列の操作 ・正規表現 ・日付と時刻の表示 ・ストリーム ・その他 5-1 ラッパークラス ラッパークラス=値に過ぎない基本型のデータを包み込んで(ラップして)オブジェクトとしての機能を付与するクラス 大体は小文字の頭を大文字にしただけ 違いのはchar(Character)とint(Integer)くらい しかし、一般的にはラッパークラスを使うときはコレクションに対して数値をセットするなどだけでまず基本型 基本型→ラッパークラスはボクシング(Boxing)という。逆はアンボクシング ボクシング Integer int_obj = 108; アンボクシング int i = int_obj; そもそもボクシング(2つ合わせてオートボクシング)は避けるべき 数値から文字列変換 Java System.out.println(Integer.parseInt("108")); //結果は108 System.out.println(Double.parseDouble("1.234")); //結果は1.234 System.out.println(Integer parseInt("FF", 16)); //255(第2引数指定で36進数まで変換可能) System.out.println(DoubleparseDouble("0.653e2")); //65.3 数値から文字列変換 Java System.out.println(Integer.toString(108)); System.out.println(Double.toString(1.234)); System.out.println(Integer.toString(255,16)); //ff 文字列の操作 文字列の長さを文字列の長さ比較はlengthだけでなく、codePointCountメゾットを用いることがある。 これはUnicodeの限界を超えた時点で1文字を4バイトと表現するから Java var str = "叱る"; System.out.println(str.codePointCount(0,str.length())); //public int codePointCount(int begin, int end) //文字列全体を検索するときには0,str.lengthを引数に 文字列の比較はcompareToメゾットを用いるが、大文字小文字を無視するならcompareToIgnoreCaseメゾットを用いる equalsとequalsIgnoreCaseもある 空であるかどうかはisEmptyかisBlankかであるが違いは 前者は何も入っていないときで後者は全角半角のスペースやタブキーなども用いる 文字列の前後から空白を消すときはstripメゾットを用いる 前方の身はstrpLeadingで後者はstripTrailngをもちいる 文字列検索はindexOfとlastIndexOf Java public int index Of(String str [,int index]); //後ろの引数は開始位置を示す //無かったら―1を返す 文字列に特定の文字列が含まれているか Java public boolean contains(String s) public boolean startsWith(String prefix [, int offset]) public boolean endsWith(String suffix) //startsWithでは開始位置を指定できる 文字列から部分的要素を取り出したいときはsubStringメゾット public String substring(int begin [, int end]) ただし1文字単位で抜き出したいときはcharAtを用いる 文字の区切りはsplitメゾット 文字列の連結はjoin var str1 = "梅, 桃, 桜と杏子" var result1 = str1.split("[, と]") System.out.println(String.join("&", result1)) //梅&桃&桜&杏子 var str2 = "梅, 桃, 桜と杏子" var result2 = str1.split("," 3) System.out.println(String.join("&", result2)) //梅&桃&桜と杏子 文字列の成型はformatメゾット Java System.out.println(String.format("%sは%s、%d歳です", "さくら", "女の子", 6)) //さくらは女の子、6歳です System.out.println(String.format("%.2sです", "さくら")) //さくです System.out.println("%5sです", "さくら") //  さくです System.out.println("小数点%.2f", 1.23654) //小数点1.24 var d = LocalDateTime.now(); System.out.println(String.format("%tF", d)) //2021-7-29 日付や時刻はDなら日付,tなら時刻(午前午後を定める)などある 5-3 正規表現 正規表現とはあいまいな文字列パターンを表現するための記法 郵便番号なら[0-9]{3}-[0-9]{4}=0-9から3文字で0-9から4文字 Javaでよく利用する正規表現パターン XYZ・・XYZにマッチ [XYZ]・・XかYかZ [^XYZ]・・XかYかZ以外 [X-Z]・・XからZまで1文字 [X|Y|Z]・・X,Y,Zのいづれか X*・・0文字以上のX X?・・0か1文字のX X+・・1文字以上のX X{n}・・n回のX ^・・行の先頭 $・・行の後ろ .・・任意の1文字 ¥w・・大文字/小文字の英二と数字とアンダースコア ¥W・・文字以外に一致 ¥d・・数字に一致 ¥D ・・数字以外に一致 ¥m・・改行に一致 ¥r・・復帰に一致 ¥t・・タブ文字に一致 ¥s・・空白文字と一致 ¥S・・空白以外の文字と一致 ¥~・・「~」であらわされるもの matchメゾット public static bpplean matches(String regex, Char Sequence input) 実例 Java import java.util.regex.Pattern; public class RegMatches { public static void main(String[] args) { var tel = new String[] { "080-0000-0000", "084-000-0000", "184-0000" }; var rx = "\\d{2,4}-\\d{2,4}-\\d{4}"; for (var t : tel) { System.out.println(Pattern.matches(rx, t) ? t : "アンマッチ"); // System.out.println(t.matches(rx) ? t : "アンマッチ"); } } } 文字列の検索 マッチした文字列を抜き出すときはPattern/Matcherクラスを利用 Java import java.util.regex.Pattern; public class RegMatcher { public static void main(String[] args) { var str = "会社の電話は0123-99-0000です。自宅は000-123-4567だよ。"; var ptn = Pattern.compile("(\\d{2,4})-(\\d{2,4})-(\\d{4})"); var match = ptn.matcher(str); while (match.find()) { System.out.println("開始位置:" + match.start()); System.out.println("終了位置:" + match.end()); System.out.println("マッチング文字列:" + match.group()); System.out.println("市外局番:" + match.group(1)); System.out.println("市内局番:" + match.group(2)); System.out.println("加入者番号:" + match.group(3)); System.out.println("-----"); } } } Patternクラスはnewでインスタンス化できない compileメゾット public static Patterm compile(String regex, [int flags]) matcherメゾット Java public Matcher matcher(CharSequence input) //主要メゾットは以下の通り //boolean find([int start])・・次のマッチを検索 //boolean lookingAt()・・文字列先頭からマッチするか //boolean matches・・文字列全体にマッチするか //int start([int group])・・開始位置の取得 正規表現はいったんここまでで2周目にがっつりやろうと思います 後半で残りの時刻操作とストリームとその他やります
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む