質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

2回答

537閲覧

jsp サーブレット 干支表示

naoto_0416

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2018/09/19 02:10

西暦を入力すれば 干支表示というプログラムを作りたいのですが
計算方法計算方法、飛ばし方、入力された数字がボタンを押すと計算されて表示させる方法が
全く分かりません。
調べても理解できませんでした。
よければコーディングしていただけないでしょか?

サーブレット package eto.Etoservlet; 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 Eto */ @WebServlet("/Eto") public class Eto extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Eto() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("干支"); String empName = ""; empName = request.getParameter("empName"); System.out.println(empName); request.setAttribute("empName", empName); request.getRequestDispatcher("eto.jsp").forward(request, response); } } JSP側 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>干支</title> </head> <body> 西暦 <form method="post" action="Eto"> <input type="text" name="empName"> <input type="submit"value="干支表示"> <%=request.getAttribute("empName") %> ${empName} </form> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/09/19 02:18

コードは ```(バッククォート3つ) で「囲う」必要があります。難しければ、コード部分を選択してcodeボタンを押すと楽です。「ここに言語を入力」は実際のプログラミング言語に置き換えてください。コードブロックは複数設置できるので、言語ごと、またはコントローラーとビュー、ファイルごと、など適宜分けていただけると再現確認もしやすくなりますので、適宜ご対応いただければと。
m.ts10806

2018/09/19 02:23 編集

で、「コーディングしていただけないでしょか?」だと「作業依頼」となりteratailでは非推奨です。折角 自身で組まれたコードがあるのですから、現在のコードで起きている現象、何ができてないか、どうわからないかを具体的に記載してアドバイスが的確に得られるような質問内容に調整してください。「調べても理解できませんでした」も同じく、これだけでは何をどう調べたのかわからないので、調べた内容を提示してください。
yukihisa

2018/09/19 02:25 編集

デバッグ・コーディング依頼は非推奨です。 https://teratail.com/help/avoid-asking ・・・と通り一遍等なのもあれなので。今は西暦何年で干支は何かを考えれば自ずと計算方法も分かると思います(わからないのであればプログラミング以前に勉強しなきゃいけないことがある)。データの飛ばし方、ボタンの表示方法も検索しましょう(わからないというならプログラミング(ry)。検索してもよくわからなかったというのは、どう検索してどんなページをみてどこがわからなかったのでしょうか?自分の言語に関する理解度と、どこまで聞けばわかりそうかなどもきちんと提示しましょう。
yukihisa

2018/09/19 02:44 編集

・・・というか、以前、ほぼ同じ質問( https://teratail.com/questions/145604 )をしていて解決しているじゃないですか?なぜ計算方法がわからなくなったのでしょうか?
m.ts10806

2018/09/19 02:41

yukihisaさん 半角カッコはURLをくっついてしまうのでURL前後は空白つけておいた方が良いです
yukihisa

2018/09/19 03:48 編集

mts10806 様 むむ、失礼しました。修正しましたm(_ _)m あと、よく見たらデータに"empName"使ってますが、これって「社員名」ですか?なんかそのままコピペでつかってるのかな・・・
guest

回答2

0

ベストアンサー

入力画面と表示画面を一緒にした場合、まずjspは以下のように入力フォームと、干支の計算結果が得られた場合の画面を作ります。

html

1<?xml version="1.0" encoding="UTF-8" ?> 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8" isELIgnored="false"%> 4<!DOCTYPE html> 5<html> 6<head> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 8<title>干支の表示</title> 9</head> 10<body> 11<form action="zodiac"> 12 <label for="year">西暦を入力</label> 13 <input type="text" name="year" id="year"> 14 <input type="submit" value="送信する"> 15</form> 16 17<% 18 String eto = (String)request.getAttribute("eto"); 19 if (eto != null) { 20 out.print("干支は" + eto + "です"); 21 } 22%> 23</body> 24</html>

干支の内容は、入力フォームから、yearの名前で調べたい西暦を入力し、リクエスト属性 eto でサーブレットから受け取れると決めておいて、

サーブレットでは、

java

1import java.io.IOException; 2 3import javax.servlet.ServletException; 4import javax.servlet.annotation.WebServlet; 5import javax.servlet.http.HttpServlet; 6import javax.servlet.http.HttpServletRequest; 7import javax.servlet.http.HttpServletResponse; 8 9/** 10 * 干支計算。 11 * @author A-pZ 12 */ 13@WebServlet("/zodiac") 14public class ZodiacServlet extends HttpServlet { 15 16 // 干支:西暦1984年が子 17 private final String[] 干支 = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}; 18 19 protected void doGet(HttpServletRequest request, HttpServletResponse response) 20 throws ServletException, IOException { 21 // Integerに変換失敗した場合のエラーハンドリングは書いていません。 22 String yearValue = request.getParameter("year"); 23 Integer year = Integer.parseInt(yearValue); 24 25 // 干支の文字列から、左から何番目かを指定して取り出したものをリクエスト属性へ格納 26 int position = (year - 1983) % 12; 27 request.setAttribute("eto", 干支[position]); 28 29 // JSPを表示 30 request.getRequestDispatcher("zodiac.jsp").forward(request, response); 31 } 32} 33

JSPから入力した西暦や数値でない場合や、1984年未満のときの制御は適宜追加してください。

投稿2018/09/19 04:06

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とりあえず直接的な回答ではなくコーディングのヒントを。

コーディングする時はやりたいことをまとめて行うのではなく、
細かく分けてから、ひとつずつこなしていくと進みやすいです。

今回であれば「jspで入力した年をサーブレットで干支に変換して表示する」という内容ですが、
これを以下のように分けて考えることができます。

  • jspで年を入力するフォームを作る
  • jspからサーブレットにデータを送信する
  • サーブレットで年を干支に変換する
  • 干支を表示する(コードを見る限りjspで表示?)

一気に全部やろうとせず、ひとつひとつ実装してみてください。

投稿2018/09/19 03:06

dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問