Javatarの日記

36歳ハゲデブがITで一旗あげるためにJavaに挑戦!

Javaで年を取得する

webサイトを作っている時に、本年度を出す必要性に迫れたので取得方法を調査した。

java.util.Calendarのインポート行いCalendarクラスのgetメソッドを使えばいけそうだ。

import java.util.Calendar;
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);

確かに上を実行したら表示することができた。

JSPで大量に出力される空白を削除したい

JSPでHTMLを表示させた際に、大量に空白が表示されてしまう。

これでは、ダウンロードに時間もかかるし、表示した際に改行だらけでなんかイケてない。

そこで、どうすれば余分な空白ないし改行を削除することができるのか調べたら、どうやらtrimDirectiveWhitespaces属性をtrueにすればいけるようだ。

<%@page trimDirectiveWhitespaces="true"%>

確かに試したところ余計な空白を削除することができた。

一件落着。

JSPファイルで出力した内容が文字化けしている件

JSPファイルを表示させた時になぜか文字化けを起こしてしまう。

HTMLファイルには、metaタグでutf-8の設定をしているにもかかわらず。

<meta charset="utf-8">

ひょっとしたらサーバー側でutf-8の設定をしないといけないのではないかと考え、jspファイルにcontentTypeの設定をしたら文字化けが治りました。

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

The serializable class XXXServlet does not declare a static final serialVersionUID field of type longという警告

Google App Engine Java 8でServletを実装していたら警告が表示された

どんな警告かというと、本記事のタイトルとなっている The serializable class XXXServlet does not declare a static final serialVersionUID field of type long という警告である。

ソースコードは純粋にリクエストに対してそのままjspを表示させるというシンプルなものである。

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;

@WebServlet(
    name = "HogeServlet",
    urlPatterns = {""}
)
public class HogeServlet extends HttpServlet implements BaseInterface {
  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
    request.getRequestDispatcher("/hoge.jsp").forward(request, response);
  }
}

解決策としてserialVersionUID変数にlong型の変数を設定することで、いったん、警告を解除することができた。

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;

@WebServlet(
    name = "HogeServlet",
    urlPatterns = {""}
)
public class HogeServlet extends HttpServlet implements BaseInterface {
  private static final long serialVersionUID = 1L;
  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
    request.getRequestDispatcher("/hoge.jsp").forward(request, response);
  }
}

ただこれ、根本解決ではないような気がするんだよなぁ〜。

個人運用の小さなシステムだったら問題ないと思うんだけど、大規模システムだと怪しい気がする。

Cloud Tools for Eclipseのインストール方法

Google App Engine JavaをEclipseで作る際に、プラグインをいれないといけないことに気がついたので、その方法についてまとめてみる。

Eclipseを立ち上げて、「Help」の「Eclipse Marketplace」を選択

f:id:maipontan:20190916125828p:plain
Help→Eclipse Marketplace
Google Cloudと入力して検索を行い、Google Cloud Tools for Eclipseで「Install」をクリック
f:id:maipontan:20190916130516p:plain
Google cloud
「Confirm」ボタンをクリック
f:id:maipontan:20190916130854p:plain
Confirmボタンをクリック
「I accept the terms of the licence agreements」にチェックを入れて、「Finish」ボタンをクリック
f:id:maipontan:20190916131038p:plain
「I accept the terms of the licence agreements」にチェックを入れて、「Finish」ボタンをクリック
インストールが完了したら、「Restart Now」ボタンをクリックして適用させる
f:id:maipontan:20190916131429p:plain
Restart Nowボタンをクリックして適用