Sea*_*nch 11 java jsp servlets web-applications
我一直在我正在构建的Web应用程序中混合使用JSP和Servlet,我开始发现我的更复杂的JSP最终包含了很多代码,这些代码面对所有被攻击的MVC课程.进入我 我知道我可以通过转发到JSP来做到这一点,但这看起来像是一个愚蠢的黑客.
我想做的是使用servlet进行处理,然后将一组值发送到JSP以呈现HTML并返回响应.有点像:
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// ... Do some processing
resp.getWriter.print(renderJSP("mypage.jsp", values));
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在寻找Sun的文档并发现:http://java.sun.com/developer/technicalArticles/javaserverpages/servlets_jsp/ 看起来JSP Model 2架构正是我想要实现的,但我找不到一个如何设置它的例子.由于技术原因,我不能使用像Struts这样的更高级的模板框架.
这是可能的还是失败的原因?
Ell*_*gas 10
将对象放入请求中,将请求转发到jsp页面,然后使用jsp中的对象呈现响应.
在你的servlet中,
MyObject obj = ... //build somehow
request.setAttribute("myObject", obj);
RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/jsp/my.jsp");
rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)
如果不应直接从URL访问结果JSP,则应将其隐藏在WEB-INF目录中,只能通过forward指令访问它.
然后在你的jsp你可以,
<% MyObject obj = (MyObject) request.getAttribute("myObject"); %>
Run Code Online (Sandbox Code Playgroud)
检索对象并根据需要使用它.
正如其他人所建议的那样,最终学习使用JSTL以及像Spring MVC这样的MVC框架是一个好主意.可以在这里找到该教程.
将Java对象放在Request/ Response/中Session并在servlet中使用javax.servlet.RequestDispatcher,类似于:
RequestDispatcher dispatcher = request.getRequestDispatcher("/test.jsp");
dispatcher.forward(request,response);
Run Code Online (Sandbox Code Playgroud)
forward是服务器端,目标servlet/JSP接收与原始servlet/JSP相同的请求/响应对象.因此,您可以使用它们在它们之间传递数据request.setAttribute().
另一种选择是使用response.sendRedirect是(字符串位置),其是客户端(此方法发送一个临时重定向响应于客户端),以使位置URL接收来自客户端的新请求,并传递数据是唯一的方法通过会话或使用web参数(url?name = value).
这基本上就是MVC框架所做的事情(不,它不是黑客).
| 归档时间: |
|
| 查看次数: |
5589 次 |
| 最近记录: |