Hello Java

ツール

eclipse

Eclipse 日本語化 | MergeDoc Project
Eclipse Downloads(本家)

  • エラー調べ中に見つけたオプション。「 -clearPersistedState」があるのは知りませんでした、というか使ったことなかったです。

org.eclipse.swt.SWTError: No more handles - 覚書

どうせなら最新版の「4.6 Neon」がよかったんですが、
どうも挙動がおかしいので、本家のも動かしてみたらおんなじ感じなのであきらめました。

「4.5 Mars マース」で挙動安定な感じなのでこちらを使うことに。

git

Eclipse EGit の使い方(1/2) | hiromasa.another :o)

  • 共有で「Use or create repositoru in parent folder of project」にチェック
  • 「Create Repository」をクリック
  • ワークスペースと同じフォルダに .git リポジトリが作成される

そんな感じで、git管理してみようという実験で

Hello Java

そんなこと思いましたんで、久々に。

Mavenプロジェクトで「webapp」選択してプロジェクト作成

「index.jsp」でエラーとなりますんで、
pom追加で対応。

サーバクラスパス追加でもあるんですけどね、Mavenビルド構成なればpomで解決すべきだろうということで。

説明 リソース パス ロケーション 型
スーパークラス "javax.servlet.http.HttpServlet" が Java ビルド・パスで見つかりませんでした index.jsp /hello-maven-webapp/src/main/webapp 行 1 JSP 問題

Junitも4がいいわけなんで、こんな感じで。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>gid</groupId>
	<artifactId>hello-maven-webapp</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>hello-maven-webapp Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>

		<!-- https://mvnrepository.com/artifact/junit/junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

	</dependencies>
	<build>
		<finalName>hello-maven-webapp</finalName>
	</build>
</project>

pom.xmlの各要素デフォルト値と変数置換について - Qiita
Maven – Download Apache Maven
Maven – Introduction to the POM

サーバは「Tomcat 9」で

最新でと思ったら選択枠にでてこなくて。。

http://download.eclipse.org/releases/neon

Serverで検索して
インストールすればOKでした。

次のeclipseバージョンでなら準備されているという悲しい状態ってことなんですねと思いました。

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Hello Java

Java
public class Hello {
	public static void main(String[] args) {
		System.out.println("Hello Java!!");
	}
}
JSP
<html>
<body>
	<h2>Hello World!</h2>
	<h2><%="JSP!!"%></h2>
</body>
</html>
Servlet
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * HelloServlet.java
 */
public class HelloServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		// <meta http-equiv="Content-Type" content="text/html;
		// charset=Shift_JIS">

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

		PrintWriter out = resp.getWriter();
		out.println("<html><head>test</head><body>");
		out.println("Hello Servlet !! GETだよ!");
		out.println("</body></html>");

		out.close();

		// TODO 自動生成されたメソッド・スタブ
		// super.doGet(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

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

		PrintWriter out = resp.getWriter();
		out.println("Hello Servlet !! POSTだよ!");

		out.close();

		// TODO 自動生成されたメソッド・スタブ
		// super.doPost(req, resp);
	}
}


super.doGet(req, resp);は呼び出さんほうがよいのだろうか??ということで
エラーになりますのでコメントアウトで。
時間があれば調べたいと思います。

1 08, 2017 2:34:51 午後 org.apache.catalina.core.StandardWrapperValve invoke
重大: サーブレット Hello のServlet.service()が例外を投げました
java.lang.IllegalStateException: レスポンスがコミットされた後でsendError()を呼び出すことはできません
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:455)
at javax.servlet.http.HttpServlet.doGet(HttpServlet.java:173)
at HelloServlet.doGet(HelloServlet.java:44)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:745)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>Archetype Created Web Application</display-name>

	<servlet>
		<servlet-name>Hello</servlet-name>
		<servlet-class>HelloServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>Hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>

</web-app>

確認

Javaは普通に実行。

webはブラウザで。
http://localhost:8080/hello-maven-webapp/hello
http://localhost:8080/hello-maven-webapp/index.jsp

環境確認的な意味合いですね。
シンプルものが動かないことには始まりませんしと。