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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

2010閲覧

ストラッツアプリケーションで、beanを生成できない

masaking

総合スコア30

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2019/11/27 01:51

ストラッツ1で簡単なシステムの構築にチャレンジしています。

jspのページ遷移ができていること、データベースにアクセスして情報を検索できることを確認した後に、viewとmodelを書き換えて、アクションファイルでつないだのですが、エラーが出てつながりません。

どうすればアプリケーションが動くでしょうか。

ipEntry.jsp

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> 5<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> 6<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> 7 8 9 10<html:html> 11 12<body> 13 <h2>ぐへへ</h2> 14 <html:form action="/Ipe"> 15 <html:text name="IpForm" property="pcID" size="10"/> 16 <html:submit value="="/> 17 </html:form> 18</body> 19 20</html:html> 21

ipResult.jsp

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>Insert title here</title> 8</head> 9<body> 10 <bean:write name="IpForm" property="ip" /> 11</body> 12</html> 13

ipForm.java

java

1package form; 2 3import org.apache.struts.action.ActionForm; 4 5public class IpForm extends ActionForm { 6 private String pcID=""; 7 private String pcName=""; 8 private String ipAddress=""; 9 10 public IpForm(String pcID, String pcName, String ipAddress) { 11 // TODO 自動生成されたコンストラクター・スタブ 12 this.pcID=pcID; 13 this.pcName=pcName; 14 this.ipAddress=ipAddress; 15 } 16 17 public String getPcID() { 18 return pcID; 19 } 20 public void setPcID(String pcID) { 21 this.pcID = pcID; 22 } 23 public String getPcName() { 24 return pcName; 25 } 26 public void setPcName(String pcName) { 27 this.pcName = pcName; 28 } 29 public String getIpAddress() { 30 return ipAddress; 31 } 32 public void setIpAddress(String ipAddress) { 33 this.ipAddress = ipAddress; 34 } 35 36} 37

struts-config.xml

xml

1<?xml version="1.0" encoding="ISO-8859-1" ?> 2 3<!DOCTYPE struts-config PUBLIC 4 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" 5 "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> 6 7<struts-config> 8 9<!-- ================================================ Form Bean Definitions --> 10 11 <form-beans> 12 <form-bean type="form.CalcForm" name="CalcForm" /> 13 <form-bean type="form.CalcForm2" name="AAA" /> 14 <form-bean type="view.CalcView" name="CalcView" /> 15 <form-bean type="form.IpForm" name="IpForm" /> 16 </form-beans> 17 18 19<!-- =========================================== Global Forward Definitions --> 20 21 <global-forwards> 22 <!-- Default forward to "Welcome" action --> 23 <!-- Demonstrates using index.jsp to forward --> 24 <forward 25 name="welcome" 26 path="/pages/Calc2.jsp" /> 27 </global-forwards> 28 29 30<!-- =========================================== Action Mapping Definitions --> 31 32 <action-mappings> 33 34 <!-- 計算 --> 35 <action 36 path="/Calc" 37 type="action.CalcAction" 38 name="CalcForm" 39 scope="session" 40 validate="false" 41 input="Calc"> 42 <forward 43 name="success" 44 path="Calc" /> 45 </action> 46 47 <!-- 自作計算 --> 48 <action 49 path="/Calc2" 50 type="action.CalcAction2" 51 name="AAA" 52 scope="session"> 53 <forward 54 name="success" 55 path="/pages/Calc2.jsp" /> 56 </action> 57 58 <action 59 path="/Ipe" 60 type="action.IpAction" 61 name="IpForm" 62 scope="session"> 63 <forward 64 name="success" 65 path="/pages/ipResult.jsp" /> 66 </action> 67 68 69 </action-mappings> 70 71 72<!-- ============================================= Controller Configuration --> 73 74 <controller 75 processorClass="org.apache.struts.tiles.TilesRequestProcessor"/> 76 77 78<!-- ======================================== Message Resources Definitions --> 79 80 <message-resources parameter="MessageResources" /> 81 82 83</struts-config> 84 85

ipAction

java

1package action; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9import javax.naming.NamingException; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13import org.apache.commons.beanutils.BeanUtils; 14import org.apache.struts.action.ActionForm; 15import org.apache.struts.action.ActionForward; 16import org.apache.struts.action.ActionMapping; 17 18import form.IpForm; 19 20public class IpAction { 21 public 22 ActionForward execute( 23 ActionMapping mapping, 24 ActionForm form, 25 HttpServletRequest request, 26 HttpServletResponse response) 27 28 throws 29 SQLException, 30 NamingException, 31 IllegalAccessException, 32 java.lang.reflect.InvocationTargetException, 33 Exception{ 34 35 request.setCharacterEncoding("UTF-8"); 36 String pcID =request.getParameter("pcID"); 37 String pcName =request.getParameter("pcName"); 38 String ipAddress =request.getParameter("ipAddress"); 39 40 final String JDBC_URL = "jdbc:mysql://localhost:3306/pcm?serverTimezone=JST"; 41 final String DB_USER = "root"; 42 final String DB_PASS = "y21password"; 43 44 try (Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)){ 45 46 String sql 47 = "SELECT mng_pc.pc_id, pc_name, ip_address " + 48 "FROM pcm.mng_pc " + 49 "JOIN pcm.ip_address " + 50 "on mng_pc.pc_id=ip_address.pc_id where mng_pc.pc_id=?"; 51 52 PreparedStatement pStmt = conn.prepareStatement(sql); 53 pStmt.setString(1, pcID); 54 ResultSet rs = pStmt.executeQuery(); 55 56 57 while (rs.next()){ 58 IpForm iform = new IpForm(pcID,pcName,ipAddress); 59 BeanUtils.setProperty(iform, "id", rs.getString("pc_id")); 60 BeanUtils.setProperty(iform, "name", rs.getString("pc_name")); 61 BeanUtils.setProperty(iform, "ip", rs.getString("ip_address")); 62 request.setAttribute("IpForm", iform); 63 } 64 }catch (SQLException e) { 65 e.printStackTrace(); 66 return null; 67 } 68 return (mapping.findForward("success")); 69 } 70} 71

エラーメッセージ

タイプ 例外報告 メッセージ [pages/ipEntry.jsp] の処理中に行番号 [14] で例外が発生しました。 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 org.apache.jasper.JasperException: [pages/ipEntry.jsp] の処理中に行番号 [14] で例外が発生しました。 11: 12: <body> 13: <h2>ぐへへ</h2> 14: <html:form action="/Ipe"> 15: <html:text name="IpForm" property="pcID" size="10"/> 16: <html:submit value="="/> 17: </html:form> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) filter.EncodingFileter.doFilter(EncodingFileter.java:30) 根本原因 javax.servlet.ServletException: javax.servlet.jsp.JspException: クラス form.IpForm のbeanを生成する際の例外: {1} org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:666) org.apache.jsp.pages.ipEntry_jsp._jspService(ipEntry_jsp.java:159) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) filter.EncodingFileter.doFilter(EncodingFileter.java:30) 根本原因 javax.servlet.jsp.JspException: クラス form.IpForm のbeanを生成する際の例外: {1} org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:487) org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:457) org.apache.jsp.pages.ipEntry_jsp._jspx_meth_html_005fform_005f0(ipEntry_jsp.java:219) org.apache.jsp.pages.ipEntry_jsp._jspx_meth_html_005fhtml_005f0(ipEntry_jsp.java:185) org.apache.jsp.pages.ipEntry_jsp._jspService(ipEntry_jsp.java:144) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) filter.EncodingFileter.doFilter(EncodingFileter.java:30) 注意 原因のすべてのスタックトレースは、サーバのログに記録されています

beanができていないとのことなので、ipActionのwhileの下りあたりがいけないのかとも思いましたが、ここからどう直していけばよいのかわからないです。

お知恵を拝借いただけると幸いです。

以下環境

Windows
Microsoft Windows [Version 10.0.17763.737]
Widnows10 Pro version 1809
Eclipse
Version: 2019-09 R (4.13.0)
Build id: 20190917-1200

Tomcat
9.0
Java
C:\Program Files (x86)\Java\jre1.8.0_221
C:\Program Files (x86)\Java\jdk1.5.0
Mysql
mysql Ver 8.0.17 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql-connector-java-8.0.17.jar

Struts
Specification-Version: 1.2.9(first struts プロジェクト)

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

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

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

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

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

guest

回答1

0

ベストアンサー

ipForm.javaに引数無しの空のコンストラクタを作成してみてください。
Action実行時のBean作成は空のコンストラクタを作成した後、各フィールドのセッターメソッドから値がセットされるのでこれで動くかと。

投稿2019/11/27 02:28

syachiku

総合スコア117

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

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

masaking

2019/11/27 07:30

ありがとうございます。 コンストラクタ、というものを今回初めて知りました。 引数のあるなしをどういう場面で使い分けるかがわかっていないので、そこがこれからの課題だと思いました。 あとは、jspに書くpropertyが、beanutilsで使うsetpropertyと対応しているところに気が付けなくて詰まっていました。 1週間ほどずっと悩んでいたので解決できてうれしいです。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問