如何在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
。
您可以使用
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)。