Reputation: 57
I'm trying to send variables between jsp using servlets, but I got this error that I still can't figure out why. It keeps sending HTTP Status 500 error.
Here's the jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
Fuzzy Topsis Supplier Selection
</title>
<!-- Normalize -->
<link href="assets/css/normalize.css" rel="stylesheet">
<!-- Bootstrap -->
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
<!-- Bootstrap -->
<link href="assets/css/custom_style_00.css" rel="stylesheet">
<!-- Font -->
<link href="assets/css/font.css" rel="stylesheet">
</head>
<!-- BODY STARTS HERE -->
<body>
<section class="main_wrapper">
<%
request.getSession().invalidate();
%>
<!-- FORM STARTS HERE -->
<div class="form_wrapper">
<form action="./Page_One_Controller">
<div class="sub_form_wrapper">
<span>
Input jumlah supplier :
</span>
<div class="sub_form_input">
<input type="text" class="form-control" name="sNum">
</div>
</div>
<div class="sub_form_wrapper">
<span>
Input jumlah pengambil keputusan :
</span>
<div class="sub_form_input">
<input type="text" class="form-control" name="dNum">
</div>
</div>
<div class="sub_form_wrapper">
<span>
Input jumlah kriteria :
</span>
<div class="sub_form_input">
<input type="text" class="form-control" name="cNum">
</div>
</div>
<div class="sub_form_wrapper">
<div class="sub_form_input">
<input class="btn btn-default btn-lg" type="submit" value="Submit" name="submit">
</div>
</div>
</form>
</div>
</section>
</body>
And here's the servlet :
package Controller;
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 = "Page_One_Controller", urlPatterns = {"/Page_One_Controller"})
public class Page_One_Controller extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
int sNum = (Integer)request.getSession().getAttribute("sNum");
int dNum = (Integer)request.getSession().getAttribute("dNum");
int cNum = (Integer)request.getSession().getAttribute("cNum");
request.getSession().setAttribute("sNum", sNum);
request.getSession().setAttribute("dNum", dNum);
request.getSession().setAttribute("cNum", cNum);
request.getRequestDispatcher("page_two.jsp").forward(request, response);
}
}
Sorry for the long post, it would be great if anyone can shed some light.
Thanks.
Upvotes: 2
Views: 46866
Reputation: 1
**Demo.java**
package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
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("/Demo")
public class Demo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ServletContext sc = getServletContext();
out.println("<h1>"+sc.getInitParameter("driverName")+"</h1>");
}
}
**web.xml**
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>ServletContext</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>driverName</param-name>
<param-value>sun.jdbc.jdbcOdbcDriver</param-value>
</context-param>
<servlet>
<servlet-name>MyDemo</servlet-name>
<servlet-class>com.Demo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyDemo</servlet-name>
<url-pattern>/MyDemo</url-pattern>
</servlet-mapping>
</web-app>
Upvotes: 0
Reputation: 17839
The reason why you get the 500 error is in this line:
request.getSession().setAttribute("sNum", sNum);
Here you try to set a session attribute to a not initialized primitive datatype.
To fix that should be getting the value from the request Object and not from session:
int sNum = Integer.parseInt(request.getParameter("sNum"));
So your servlet code should be somthing like this:
int sNum = Integer.parseInt(request.getParameter("sNum"));
int dNum = Integer.parseInt(request.getParameter("dNum"));
int cNum = Integer.parseInt(request.getParameter("cNum"));
request.getSession().setAttribute("sNum", sNum);
request.getSession().setAttribute("dNum", dNum);
request.getSession().setAttribute("cNum", cNum);
request.getRequestDispatcher("page_two.jsp").forward(request, response);
Upvotes: 3