Servlet要呼叫(公派jsp页面)jsp跟在jsp中使用javaBeans比走来要简单的多了,主要只是网页传送的技巧而已,在图2虽使用到;
撰写Servlet
Seervlet程序如下:
import java.io.*;
import javax.Servlet.*;
import javax.servlet.http.*;
public class HelloWorldServlet extendsHttpServlet{
public void Service (HttpServletRequestrequest, HttpSeervletResponse reponse) throws ServletException, IOException{
response.setContentType("text/html; charset=big5");
request.setCharacterEncoding("big5");
StringtheMessage = "Hello, World!";
StringtargetURL = "/HelloFromServlet.jsp";
request.setAttribute("message", theMessage);
RequestDispatcher rd;
rd = getServletContext().getRequestDispatcher(targetURL);
rd.forward(request,response);
}
}.
注意:
1、 之前Servlet程序都是用doGet来处理用户端的Httprequest,这里则改用service.
2、 Request.setAttribute().
3、 RequestDisatcher类别。
4、 getServletContext().
5、 ServletContext类别的getRequestDisatcher()方法。
6、 RequestDisatcher类别的Forward()方法。
撰写jsp:
helloFromServlet.jsp
<%@ page language="java" contentType="text/html;charset=big5" %>
<% String msg = (String)request.getAttribute("message"); %>
<html>
<body>
从 servlet 传来的信息: <%= msg %>
</body>
</html>
之前的servlet程序使用到了request.setAttribute()这里则用到了request.getAttribute() ,从这里就可以看出来,sevlet和jsp通过request来储存和传递给对方参数。
程序的运行过程如下:
1. 用户端送出HTTPrequest请求,请求的网址是:http://localhost:8080/myapp/helloWordServlet.
2. helloworldServlet收到请求后通过request.setAttribute()把要传送给jsp的参数字串“hello,World”储存在request容器里;
3. helloWorldSservlet通过servletContext建立requestDispatcher容器,并指定转发的网址。
4. helloWorldServlet使用RequestDispatcher的forwaard()方法,把这次的Http request转发至另一网页,出就是HelloFromServlet.jsp.
5. jsp先通过request.getAttribute()取得request容器中的属性值,该属性值是在步骤2中由Servlet指定的,最后搭配Html标签显示出来。
我把整个过程书写成了一个循序图,你可以搭配上面的文字说明来了解程序的运行过程;