Using HttpServletResponse object in spring MVC handler method

I am new to Spring MVC and Servlets. I am trying to run home() method in controller class SearchController but the output is only from home.jsp file. Statement:

out.println("<h1> this is my response block</h1>");

in not included in the result on browser.

Is there anything that can be done to print the out object statement in the browser with home.jsp file?

package springmvcsearch;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SearchController {
    @RequestMapping("/home")
    public String home(HttpServletResponse res) throws IOException {

        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        out.println("<h1> this is my response block</h1>");
        
return "home";
    }

}

This is home.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>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link href="<c:url value='/resources/css/style.css' />"
    rel="stylesheet">
<script src="<c:url value='/resources/js/sample.css' /> "></script>


</head>
<body>
    This is home view
    
</body>
</html>

This is the output on the browser: enter image description here

Answer

out.println() is used in jsp file. So you can edit your home.jsp as follows

<%@ 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>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link href="<c:url value='/resources/css/style.css' />"
    rel="stylesheet">
<script src="<c:url value='/resources/js/sample.css' /> "></script>


</head>
<body>
    This is home view
      <%
         out.println("<h1> this is my response block</h1>");
      %>
</body>
</html>

If you want to add something for home.jsp via the controller class, you can change your controller class as follows.

package springmvcsearch;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SearchController {
    @RequestMapping("/home")
    public String home(HttpServletRequest req,HttpServletResponse res) throws IOException {

        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        String message = "this is my response block";
        req.setAttribute("message", message);
        
         return "home";
    }

}

Then change your jsp file as follows.

<%@ 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>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link href="<c:url value='/resources/css/style.css' />"
    rel="stylesheet">
<script src="<c:url value='/resources/js/sample.css' /> "></script>


</head>
<body>
    This is home view
    <h1>${message}</h1>
</body>
</html>

For further explanation, go through this link how to message from servlet and display in jsp

Leave a Reply

Your email address will not be published. Required fields are marked *