How to access JSP implicit objects like (request , response) in Java

后端 未结 3 1719
南方客
南方客 2021-01-23 15:03

How to pass JSP implicit objects like (request, response) in Java. I want to access JSP Implicit Objects in Java code. Please suggest how to achieve this?

My Jav

相关标签:
3条回答
  • 2021-01-23 15:42

    You can pass objects to the bean using <jsp:setProperty and EL expressions. You have to modify the bean for getter and setter methods.

    public class SomeBean {
      String punchOutRes = null;
      HttpServletResponse response;
      HttpServletRequest request;
    
      public HttpServletResponse getResponse() {
        return response;
      }
    
      public void setResponse(HttpServletResponse response) {
        this.response = response;
        try {
          response.getWriter().println("Some Output");
        } catch (IOException e) {
          e.printStackTrace();  
        }
      }
    
      public HttpServletRequest getRequest() {
        return request;
      }
    
      public void setRequest(HttpServletRequest request) {
        this.request = request;
      }
    
      public String getPunchOutRes() {
        response.setContentType("text/xml");
        return "testing";
      }
    }
    

    then use in the JSP

    <jsp:useBean id="someBean" class="beans.SomeBean" scope="request"/>
    <jsp:setProperty name="someBean" property="request" value="${pageContext.request}"/>
    <jsp:setProperty name="someBean" property="response" value="${pageContext.response}"/>
    
    0 讨论(0)
  • 2021-01-23 15:56

    IMO I don't think it is possible to pass implicit objects directly to java class so but one thing you can do is pass session and request object from servlet to a java class either in some method or in constructor of java class.

    Also see this question

    0 讨论(0)
  • 2021-01-23 15:57

    You would be able to use some servlet class. for instance :

    public class ActionServlet extends HttpServlet
    {
    
    public ActionServlet()
    { 
      super();
    }
    
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
    {
        request.setCharacterEncoding("UTF-8");      
        String action = request.getParameter("action");        
    
        //do smth. with "action" you are able to use your class "SomeBean"
    
        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");
        response.sendRedirect(someUrl);                
    
    }
    }
    

    you must add into the web.xml following:

     <servlet>
        <description></description>
        <display-name>ActionServlet</display-name>
        <servlet-name>ActionServlet</servlet-name>
        <servlet-class>com.your_package.servlet.ActionServlet</servlet-class>
     </servlet>
     <servlet-mapping>
        <servlet-name>ActionServlet</servlet-name>
        <url-pattern>/Action</url-pattern>
     </servlet-mapping>
    

    "/Action" is your url.

    I gave a simple example, I didn't take account the either GET or POST method there. Also I would advise to use JSTL. Using some scriplets in the "view" is bad style of codding:)

    However, it's better to use MVC pattern(Spring/Struts).

    0 讨论(0)
提交回复
热议问题