如何在Java中访问JSP隐式对象,如(request,response)

如何在Java中传递JSP隐式对象,如(request,response)。 我想在Java代码中访问JSP Implicit Objects。 请建议如何实现这一目标?

我的Java代码是:

package test.here; import java.sql.*; import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ibm.commerce.server.WcsApp; import com.ibm.commerce.server.JSPHelper; public class SomeBean { String punchOutRes = null; HttpServletResponse response; HttpServletRequest request; public String getPunchOutRes() { response.setContentType("text/xml"); return "testing"; } } 

在这里,当我尝试在请求和响应中设置或获取任何内容时,我得到NUllPointerException

您可以使用和EL表达式将对象传递给bean。 您必须为getter和setter方法修改bean。

 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"; } } 

然后在JSP中使用

    

IMO我认为不可能将隐式对象直接传递给java类,但是你能做的一件事就是在某些方法或java类的构造函数中将会话和请求对象从servlet传递给java类。

另见这个问题

您将能够使用一些servlet类。 例如 :

 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); } } 

你必须在web.xml中添加以下内容:

    ActionServlet ActionServlet com.your_package.servlet.ActionServlet   ActionServlet /Action  

“/ Action”是你的url。

我给出了一个简单的例子,我没有考虑那里的GET或POST方法。 我也建议使用JSTL。 在“视图”中使用一些scriplet是糟糕的编码风格:)

但是,最好使用MVC模式(Spring / Struts)。