0

ログインできる3つのクラス、コントローラー、およびDAOを持つ単純なJSPプロジェクトがありますが、ボタンをクリックすると、フォームからパラメーターを取得できません。

コードを見せてください。おそらくあなたはそれを理解するでしょう:

package school.controller;

import java.io.IOException;

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

import school.dao.StudentDAO;
import school.model.Student;

public class StudentController extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static String UPDATE = "/student.jsp";
    private static String VIEW_COURSES = "CourseController";
    private static String VIEW_GRADES =  "GradeController";
    private StudentDAO dao;

    public StudentController() {
        dao = new StudentDAO();
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String forward = "";
        String action = request.getParameter("name");

        if (action.equalsIgnoreCase("update")) {

            forward = UPDATE;
            Student student = (Student) request.getAttribute("student");
            request.setAttribute("student", student);

        } else if (action.equalsIgnoreCase("viewgrades")) {

            forward = VIEW_GRADES;

            Student student = (Student) request.getAttribute("student");
            request.setAttribute("student", student);

        } else if (action.equalsIgnoreCase("viewcourses")) {

            forward = VIEW_COURSES;
            Student student = (Student) request.getAttribute("student");
            request.setAttribute("student", student);
        }

        RequestDispatcher view = request.getRequestDispatcher(forward);
        view.forward(request, response);
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }
}

そして、ここにWEB.xmlがあります

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>School_JSP</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>CourseController</display-name>
    <servlet-name>CourseController</servlet-name>
    <servlet-class>school.controller.CourseController</servlet-class>
  </servlet>
  <servlet>
    <description></description>
    <display-name>StudentController</display-name>
    <servlet-name>StudentController</servlet-name>
    <servlet-class>school.controller.StudentController</servlet-class>
  </servlet>
  <servlet>
    <description></description>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>school.controller.LoginServlet</servlet-class>
  </servlet>

  <servlet-mapping>
        <servlet-name>StudentController</servlet-name>
        <url-pattern>/StudentController</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>CourseController</servlet-name>
        <url-pattern>/CourseController</url-pattern>
    </servlet-mapping>
</web-app>

そしてmainPage.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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=ISO-8859-1">
<title>Main Page</title>
</head>
<body>

    <h3>
        Welcome,
        <c:out value="${student.firstName}" />

        </br>
        <h1>My Personal Information</h1>
        <center>
            <form method="POST" action='StudentController' name="viewgrades">
                <input type="submit" value="View My Grades" />
            </form>
            <form method="POST" action='StudentController' name="viewcourses">
                <input type="submit" id="hidden" value="View My Courses" />
            </form>
            <form method="POST" action='StudentController' name="update">
                <input type="submit" id="hidden" value="Update Personal Information" />
            </form>
        </center>
    </h3>

</body>
</html>
4

2 に答える 2

2

属性とパラメーターを混同しています。

パラメータは、ブラウザから送信される文字列値です。getParameterXxx()これらは、一連のメソッドを使用してアクセスされます。

属性は、後で取得するためにリクエスト (またはセッション、またはサーブレット コンテキスト)、または任意のタイプに追加できるデータです。JSP でこの属性を取得して情報を表示するには、通常、サーブレットで要求に属性 (ログインしているユーザーに関する情報など) を追加します。

コードでは、パラメーターを取得する場所のみがコメント アウトされています。また、「hidden」という名前のパラメーターを取得しようとしていますが、どのフォームにも名前以外の入力フィールドはありません。これnameは、ブラウザーによって送信される入力フィールドの属性であり、そのid属性ではありません。

また、物事を取得または読み取るアクションには、POST ではなく GET を使用する必要があります。

于 2013-04-27T22:21:18.213 に答える
0

値が取得されない理由は、フォームの属性「name」が実際にはフォームの名前であり、まったく送信されないためです。実際にデータを送信するには、フォームの innerHTML でいくつかを提供する必要があります。このように(最善の解決策ではありませんが、実行する必要があります):

<form method="GET" action="StudentController" name="formName">
  <input type="hidden" name="viewgrades" value="show" />
  <input type="submit" value="View My Grades" />
</form>

この後、送信されたデータ "viewgrades=show" (パラメーター=値) を Java クラスで読み取ることができます。

また、「h3」を段落 (「p」) またはセクションとして使用しないでください。見出しにする予定です。

于 2013-04-27T22:46:01.863 に答える