SQLの窓

2020年01月20日


XAMPP 内 Tomcat Version 7 の設定と簡単な実行テスト

XAMPP は、"C:\xampp" にインストールされているとします。

1) "C:\xampp\tomcat\conf\web.xml" の変更
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>


※ trimSpaces を true にする事によって無駄な改行を省く事ができます( 強調部分を追加です )
<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>


※ この設定で、その仮想フォルダのファイルの一覧を表示可能にします

2) "C:\xampp\tomcat\conf\server.xml" の変更
※ Tomcat7 のみ。Tomcat8 以降は必要ありません
<Connector
	port="8080"
	protocol="HTTP/1.1"
	connectionTimeout="20000"
	redirectPort="8443"
	useBodyEncodingForURI="true" />

ここまでで、いったん起動すると C:\xampp\tomcat\conf\Catalina\localhost が作成されます。

※ 本文が UTF-8 で記述するという前提のお話です。( 8080 で検索してコメントでないエントリに追加 )

3) ソースコードを配置する場所の定義

※ "C:\xampp\tomcat\conf\Catalina\localhost" に以下のファイルを作成します。
※ ソースコードを "C:\user\lightbox\tomcat" に lightbox.xml として作成するとします
<Context
	displayName="Web Application Home"
	docBase="C:\user\lightbox\tomcat"
	path="/lightbox"
	reloadable="true"
	useNaming="false">
</Context>

▼ 以下サンプルです
web-001.jsp
<%@ page
	language="java"
	contentType="text/html;charset=utf-8" %>
<%!
// *********************************************************
// ローカル関数
// *********************************************************
public String printFor( int count ) {

	String ret = "";

	for( int i = 0; i < count; i++ ) {
		ret += String.format( "%d<br>", i+1 );
	}

	return ret;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.css">

<style>
#main {
	padding: 30px;
	font-size: 24px;
}

</style>
</head>
<body>
<div id="main">

<% 
out.println( printFor(15) ); 
%>

</div>
</body>
</html>




このページの PDF



posted by lightbox at 2020-01-20 13:50 | java : JSP | このブログの読者になる | 更新情報をチェックする

JDK がインストールされていない PC の XAMPP の TOMCAT を Pleiades の JDK8 で動作させる

catalina_start.bat より、レジストリに 『HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit』が存在する必要があるのが解ります。

さらに、そのキー以降のどこかに JavaHome の値として実際のパスが必要です。

▼ 必要なレジストリエントリ( これを手作業で作成します )
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]
"JavaHome"="C:\\pleiades\\java\\8"



catalina_start.bat
@echo off
::::::::::::::::::::::::::::::::::::
::  Set JAVA_HOME and   ::
::::::::::::::::::::::::::::::::::::

IF EXIST tomcat\logs\catalina.pid (
  del /F/Q tomcat\logs\catalina.pid
) 

echo.
echo [XAMPP]: Searching JDK HOME with reg query ...
set KeyName=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit

reg query "%KeyName%" /s
if %ERRORLEVEL% == 1 (
  echo . [XAMPP]: Cannot find current JDK installation! 
  echo . [XAMPP]: Cannot set JAVA_HOME. Aborting ...
  goto :END
)

set "CURRENT_DIR=%cd%"
set "CATALINA_HOME=%CURRENT_DIR%"

:: only for windows 32 bit if you have problems with the tcnative-1.dll
:: set CATALINA_OPTS=-Djava.library.path="%CATALINA_HOME%\bin"

set Cmd=reg query "%KeyName%" /s
for /f "tokens=2*" %%i in ('%Cmd% ^| find "JavaHome"') do set JAVA_HOME=%%j

echo.
echo [XAMPP]: Seems fine!
echo [XAMPP]: Set JAVA_HOME : %JAVA_HOME%
echo [XAMPP]: Set CATALINA_HOME : %CATALINA_HOME%
echo.

if %ERRORLEVEL% == 0 (
echo run > logs\catalina.pid
)

"%CATALINA_HOME%\bin\catalina.bat" run


:END
echo done.
pause



このページの PDF




posted by lightbox at 2020-01-20 12:10 | java : JSP | このブログの読者になる | 更新情報をチェックする

2017年04月15日


Pleiades All in One(NEON) で、サーブレットとJSP を作成する手順

関連する記事

Pleiades All in One(NEON) で、Windows アプリを作成する手順( WindowBuilder )

Pleiades All in One(NEON) には、Tomcat8 が同梱されているので普通にすぐ使えます。(Tomcat6とTomcat7 も入ってます)

(少なくとも単独起動に必要です)

プロジェクト作成

▼ 動的 Web プロジェクトを作成します




サーブレット作成



初期のソース


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class WebApp
 */
@WebServlet("/WebApp")
public class WebApp extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public WebApp() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}


パースペクティブを Java EE にして実行







JSP 作成



▼ ソースを以下に変更して実行
( 全て保存して http://localhost:8080/Web1/NewFile.jsp にアクセス )
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP シンプル</title>
</head>
<body>

こんにちは!

</body>
</html>

サーブレットを以下のように変更

変更後、全て保存して実行( サーバは再起動 )



import java.io.IOException;

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 javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;

@WebServlet("/WebApp")
public class WebApp extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();

	public WebApp() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PageContext pageContext = _jspxFactory.getPageContext(this, request, response,
	  			null, true, 8192, true);
	JspWriter out = pageContext.getOut();


	response.setContentType("text/html; charset=UTF-8");

	out.write("<!DOCTYPE html>\r\n");
	out.write("<html>\r\n");
	out.write("<head>\r\n");
	out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
	out.write("<title>Insert title here</title>\r\n");
	out.write("</head>\r\n");
	out.write("<body>\r\n");
	out.write("\r\n");
	out.write("こんにちは!\r\n");
	out.write("\r\n");
	out.write("</body>\r\n");
	out.write("</html>");

	_jspxFactory.releasePageContext(pageContext);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

※ JSP がコンパイルされた結果の java ソースコードより転用しています

C:\user\java\Web170415a がワークスペースです
C:\user\java\Web170415a\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\Web1\org\apache\jsp\NewFile_jsp.java
posted by lightbox at 2017-04-15 22:25 | java : JSP | このブログの読者になる | 更新情報をチェックする

2011年10月09日


JSP : 実行中の .jsp と同じフォルダにあるファイルの実際のパスを取得する

jajakarta の 日本語ページドキュメントは日本語が化けるので調べるのが
面倒ですが、application.getRealPath と、request.getServletPath
で実現可能です。

// この値はCGI変数のSCRIPT_NAMEと同じ値
String SCRIPT_NAME = request.getServletPath();
out.print( SCRIPT_NAME );
out.print( "<br />" );

// 文字列分解
String[] pathResult = SCRIPT_NAME.split("/");

// 分解した文字列を必要な部分再配置
int idx = pathResult.length;
String mainPath = "";
for( int i = 1; i < pathResult.length - 1; i++ ) {
	if ( i == 1 ) {
		mainPath += pathResult[i];
	}
	else {
		mainPath += ( "/" + pathResult[i] );
	}
}

// 再配置文字列
out.print( mainPath );
out.print( "<br />" );

// 目的のフルパス
String strRealPath = application.getRealPath( mainPath + "/mydata.txt" );
out.print( strRealPath );
out.print( "<br />" );



posted by lightbox at 2011-10-09 20:09 | java : JSP | このブログの読者になる | 更新情報をチェックする

2011年10月04日


java(JSP) : テーブル名一覧と列名一覧の取得

テータベースは、ODBC 経由の Oracle です

関連する記事

VB.net : GetSchema メソッドでデータベース内のテーブル一覧と指定したテーブルの列名一覧を取得する

Microsoft の ODBC アクセスとあまり変わりはありません。
データベースの情報は接続オブジェクトに依存します
続きを読む( ソースコード )

posted by lightbox at 2011-10-04 14:12 | java : JSP | このブログの読者になる | 更新情報をチェックする

2011年10月01日


JSP : 単純なデータベースの更新( MySQL ODBC 5.1 Driver でDSNを作成しない接続 )

サンプルソースコードを使ってすぐできる実行環境は、以下で用意できます
( 含む Beans で lightbox.webapp )

Tomcat7 のインストールと、すぐ簡単にJSPアプリケーションテスト( DB アクセス、入力等 )

JSP と言っても、WEBアプリケーションには違い無いので、PHP での
$_GET にあたるものが必要になるので、Beans で実装しています。

ただ、TOMCAT + JSP では、メモリに乗ったままの状態で実行される事を
前提としているので、データベースの接続を継続するように記述してあり
ます。接続するのは最初の一度だけで、TOMCAT が終了するまで接続した
ままとなります。
※ reloadable="true" の設定ではアプリケーションを変更した場合にもリセットされます
※ マネージャよりアプリケーションを再起動した場合も同様です

MySQL に対してのアクセスなので実際は少しキャラクタセットの関係で
化ける文字が存在し、そのような時にはアプリケーションが止まってし
まう事がありました。( MySQL 側は UTF8 )

※ キャラクタセットの設定は ODBC ドライバのパラメータで行っています。
続きを読む( ソースコード )

posted by lightbox at 2011-10-01 22:37 | java : JSP | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり