Java Servlet中的GetParameterValue,带有组合框/选项框

时间:2015-01-05 10:22:56

标签: java servlets combobox getparameter

我正在尝试从JSP页面的选项框中获取信息。这方面的一个例子是:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Profile</title>
    <link rel="shortcut icon" href="../favicon.png" />
    <link rel="stylesheet" href="../reset.css" />
    <link rel="stylesheet" href="app/claro.css" />
    <link rel="stylesheet" href="app/theme/main.css" />
    <script type="text/javascript">
    // Configure application.
    appConfig = {
        // Get base url from current url.
        baseUrl: location.href.substring(0,location.href.lastIndexOf("/")+1)
    };

    // Configure Dojo.
    dojoConfig = {
        parseOnLoad: true
    };
    </script>
    <script type="text/javascript" src="http://cdn.devgrid.net/ajax/dojo/1.9.0/dojo/dojo.js"></script>
    <script type="text/javascript">
    // Load application.
    require(
        {
            packages: [
                { name: 'app', location: appConfig.baseUrl + '/app/' }
            ]
        },
        [
            "app"
        ]
    );
    </script>

</head>
<body class="claro">

<%
//allow access only if session exists
String user = null;
if(session.getAttribute("user") == null){
    response.sendRedirect("login.jsp");
}else user = (String) session.getAttribute("user");
String userName = null;
Cookie[] cookies = request.getCookies();
if(cookies !=null){
for(Cookie cookie : cookies){
    if(cookie.getName().equals("user")) userName = cookie.getValue();
}
}
%>

<div class="appBorderContainer" data-dojo-type="dijit/layout/BorderContainer">
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top', splitter:false">
        <center><IMG SRC="LogoPlaintech.png" width="30%"></center>
    </div>
    <div class="appLeadingAccordionContainer" data-dojo-type="dijit/layout/AccordionContainer" data-dojo-props="minSize:20, region:'leading', splitter:true">
        <div data-dojo-type="dijit/layout/AccordionPane" title="Server status">
            Server: RUNNING</br>
            IP-address: 0.0.0.0</br>
            Uptime: 12 hours 21 minutes 10 seconds </br>
        </div>
        <div data-dojo-type="dijit/layout/AccordionPane" title="Add a server">
        <div data-dojo-type="dijit/form/Form" enctype="multipart/form-data" action="productServlet" method="post">
    <div data-dojo-type="dojox/layout/TableContainer" data-dojo-props="cols:1">
        <div data-dojo-type="dijit/form/TextBox" title="Name server:" name="name" value=""></div>
        <select data-dojo-type="dijit/form/Select" title="Operating System:" name="os">
            <option value="Windows">Windows Server 2012</option>
            <option value="Ubuntu">Ubuntu 14.10</option>
            <option value="Debian">Debian 7.7.0</option>
        </select>
        <select data-dojo-type="dijit/form/Select" title="Amount of cores:" name="cores">
            <option value="1">1 core</option>
            <option value="2">2 cores</option>
            <option value="3">3 cores</option>
        </select>
        <select data-dojo-type="dijit/form/Select" title="RAM:" name="ram">
            <option value="512">512 MB</option>
            <option value="1024">1024 MB</option>
            <option value="2048">2048 MB</option>
        </select>
        <select data-dojo-type="dijit/form/Select" title="HDD:" name="hdd">
            <option value="20">20 GB</option>
            <option value="35">35 GB</option>
            <option value="50">50 GB</option>
            <option value="75">75 GB</option>
        </select>
    </div>
    <button id="btnSubmit" data-dojo-type="dijit/form/Button" type="submit" role="button">Submit</button>
</div>
        </div>
        <div data-dojo-type="dijit/layout/AccordionPane" title="Third pane">
            Third pane content.
        </div>
    </div>
    <div id="appCenterTabContainer" data-dojo-type="dijit/layout/TabContainer" data-dojo-props="splitter:true, region:'center'">
        <div data-dojo-type="dijit/layout/ContentPane" title="Welcome">
            <h3>Hi <%=userName %>, Login successful.</h3></br>
            Welcome at your profile page <%=userName %>. </br>
            We are happy to see you back.</br>
            </br>
            From this point it is possible to manage your VM('s), account info and backups.
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" title="Connect to your server">
            You can login to your server by SSH, with your credentials. </br>
            IP-address: 0.0.0.0</br>
            Port: 22</br>
            Username: </br>
            Password: </br>
            </br>
            <center>
            <button data-dojo-type="dijit/form/Button" type="button" role="button">Connect
            <script type="dojo/on" data-dojo-event="click" data-dojo-args="evt">
                    app.alert('You are now connecting to your server! Awesome ;-)');
            </script>
            </button>
            </center>
        </div>

    </div>
    <div class="appTrailingAccordionContainer" data-dojo-type="dijit/layout/AccordionContainer" data-dojo-props="minSize:20, region:'trailing', splitter:true">
        <div data-dojo-type="dijit/layout/AccordionPane" title="Account info">
            Fullname: </br>
            ${fullName}</br></br>
            Email address: </br>
            ${email}</br></br>
            Date of birth: </br>
            ${dateOfBirth}</br></br>
            Phonenumber: </br>
            ${phoneNumber}</br></br>
            <hr>
            </br>
            Company name: </br>
            ${companyName}</br></br>
            Company email address: </br>
            ${companyEmail}</br></br>
            Payment method: </br>
            ${paymentMethod}</br></br>
            </br>
            <button data-dojo-type="dijit/form/Button" type="button" role="button">
            Change account info
            </button>

        </div>
        <div data-dojo-type="dijit/layout/AccordionPane" title="Logout">
            Are you sure you want to logout the user <%=userName %>?</br></br>
            <div data-dojo-type="dijit/form/Form" id="LogoutServlet"
                    action="LogoutServlet" method="post">
                    <form action="LogoutServlet" method="post">
                            <table>
                                <tr>
                                    <td><button data-dojo-type="dijit/form/Button" type="submit"
                                        name="submitButton" value="Yes">Yes</button></td>
                                </tr>
                            </table>
                <div data-dojo-type="dijit/form/Form" id="profile.jsp"
                    action="profile.jsp" method="post">
                    <form action="profile.jsp" method="post">
                            <table>
                                <tr>
                                    <td><button data-dojo-type="dijit/form/Button" type="submit"
                                        name="submitButton" value="No">No</button></td>
                                </tr>
                            </table>
                    </form>
                </div>
        </div>
    </div>
</div>

</body>
</html>

现在问题是我在第32行得到一个空指针异常。所以我猜参数Ram是空的还是什么?我是否尝试过错误的方式?请帮帮我吧!感谢。

import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class productServlet extends HttpServlet {

    public String name;
    public String os;
    public String hdd;
    public String processor;
    public String ram;
    public String userName;
    public ResultSet rs, rs1;
    public PreparedStatement pstmt;

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // haal info van de website.
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        String Name = request.getParameter("name");
        // zet de info van de website in public variables.
        Name = name;    

        String[] OS = request.getParameterValues("os");
        if(OS.equals("Windows")) {  
            os = "Windows";
        } else if(OS.equals("Ubuntu")) {
            os = "Ubuntu";
        } else if(OS.equals("Debian")) {
            os = "Debian";
        }

        String[] Processor = request.getParameterValues("cores");
        if(Processor.equals("1")) {
            processor = "1";
        } else if(Processor.equals("2")) {
            processor = "2";
        } else if(Processor.equals("3")) {
            processor = "3";
        }

        String[] Ram = request.getParameterValues("ram");
        if(Ram.equals("512")) {
            ram = "512";
        } else if(Ram.equals("1024")) {
            ram = "1024";
        } else if(Ram.equals("2048")) {
            ram = "2048";
        }

        String[] HDD = request.getParameterValues("hdd");
        if(HDD.equals("20")) {
            hdd = "20";
        } else if(HDD.equals("35")) {
            hdd = "35";
        } else if(HDD.equals("50")) {
            hdd = "50";
        } else if (HDD.equals("75")) {
            hdd = "75";
        }

        // test van OS
        System.out.print(os);
}

1 个答案:

答案 0 :(得分:0)

确保您的(组合框/选项框)在表格标签的开始和结束之间包括您的操作按钮。

例如。

<form action="youraction" method="post/get">
//comboboxes / option boxes and your parameters
.........
.........
<button>.......submit/invoke button </button> 
</form>