JSP Response Set Status
In this tutorial you will learn about how to set the HTTP status code in JSP.
In Java you can specify a HTTP-specific functionality regarding to send response. An interface HttpServletResponse provides these facility. This interface provides some static final fields to set the status which are indicating their respective status code, these codes are used for indicating their respective operations. There are number of fields are defined some of them fields value with their status code are given here :
Field's Name | Status Code |
---|---|
SC_ACCEPTED | Status code (202) which shows a request was admitted for processing, but could not be completed. |
SC_BAD_GATEWAY | Status code (502) which shows HTTP server got an invalid response from a server it looked up when acting as a proxy or gateway. |
SC_BAD_REQUEST | Status code (400) which shows a request sent by the client is syntactically incorrect. |
SC_CONFLICT | Status code (409) which shows a request could not be completed due to a conflict with the current state of the resource. |
SC_CONTINUE | Status code (100) which shows a client can continue. |
SC_CREATED | Status code (201) which shows a request succeeded and created a new resource on the server. |
SC_EXPECTATION_FAILED | Status code (417) which shows the server could not meet the expectation given in the Expect request header. |
SC_FORBIDDEN | Status code (403) which shows the server understood the request but refused to fulfill it. |
SC_FOUND | Status code (302) which shows a resource reside temporarily under a different URI. |
SC_GATEWAY_TIMEOUT | Status code (504) which shows the server did not receive a timely response from the upstream server while acting as a gateway or proxy. |
SC_GONE | Status code (410) which shows the resource is no longer available at the server and no forwarding address is known. |
SC_HTTP_VERSION_NOT_SUPPORTED | Status code (505) which shows the server does not support or refuses to support the HTTP protocol version that was used in the request message. |
SC_INTERNAL_SERVER_ERROR | Status code (500) which shows an error inside the HTTP server which prevented it from fulfilling the request. |
SC_LENGTH_REQUIRED | Status code (411) which shows a request cannot be handled without a defined Content-Length. |
SC_MOVED_PERMANENTLY | Status code (301) which shows a resource has permanently moved to a new location, and that future references should use a new URI with their requests. |
SC_MOVED_TEMPORARILY | Status code (302) which shows a resource has temporarily moved to another location, but that future references should still use the original URI to access the resource. |
SC_NOT_FOUND | Status code (404) which shows a requested resource is not available. |
SC_NOT_IMPLEMENTED | Status code (501) which shows the HTTP server does not support the functionality needed to fulfill the request. |
SC_REQUEST_TIMEOUT | Status code (408) which shows a client did not produce a request within the time that the server was prepared to wait. |
SC_REQUEST_URI_TOO_LONG | Status code (414) which shows the server is refusing to service the request because the Request-URI is longer than the server is willing to interpret. |
SC_USE_PROXY | Status code (305) which shows a requested resource MUST be accessed through the proxy given by the Location field. |
Above mentioned statuses can be set using setStatus() method of HttpServletResponse interface.
Syntax of setStatus() method
void setStatus(int sc)
Argument of this method is a specified field name given in the above table.
Example :
Here I am giving a simple example which will demonstrate you about how to set the HTTP status code. In this example I have created a JSP page where designed a form to take input from the user. In the first input textbox, name of the website (e.g. google, facebook, orkut) have to be given and in the second input textbox domain (like com, in. uk) of that website have to be given and taken a submit button to submit a form. In further steps used scriptlet to write the java code where I have gotten both the values provided in the textboxes and created a new url using URL class of java.net package and converted the newly created url into a String because in the next steps where I have used the setHeader() method to set the response header takes String value only. Then I have used the setStatus() method of HttpServletResponse interface to set the status and gave the value response.SC_MOVED_TEMPORARILY (moves resource to another location) as an argument and also used the setHeader() method to set the header value. First argument of this method is a String and the value "location" is a common response header which specifies where the client should go to get document.
jspSetStatus.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.net.URL, java.util.*" %>
<!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>JSP HTTP setStatus</title>
</head>
<body>
<form>
<table>
<tr>
<td>Enter website's name only : <br>
(e.g. devmanuals, google)</td>
<td><input type="text" name="webAdd"/></td>
</tr>
<tr>
<td>Enter domain of website : <br>
(like com, net, in)</td>
<td><input type="text" name="domain"/></td>
</tr>
<tr>
<td></td><td><input type="submit" value="submit"/></td>
</tr>
</table>
</form>
<%
String webAddress = request.getParameter("webAdd");
String dom = request.getParameter("domain");
URL newUrl = new URL("http://"+webAddress+"."+dom);
String url = newUrl.toString();
if(webAddress != null)
{
// resource will be moved to another location
response.setStatus