既然jsp和servlet是等价的,在jsp中可以使用内置对象,那么在servlet中也可以使用。
1.获得out对象
可以使用如下代码获得out对象:
import java.io.PrintWriter;
...
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException{
PrintWriter out = reponse.getWriter();
}
...
不过默认情况下,out对象是无法打印中文的。这是因为out输出流中有中文却没有设置编码。解决这个问题可以将
doGet代码改为:
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
//使用out对象
2.获得request和reponse对象
...
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException{
//将reques参数当成request对象使用
//将reponse参数当成response使用
}
...
3.获得session对象
session对象对应的是HttpSession接口,在Servlet中它可以通过下面代码获得:
import javax.servlet.http.HttpSession;
...
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
HttpSession session = request.getSession();
//将session当成session对象来使用
}
...
4.获得application对象
application对象对应得是ServletContex接口,在Servlet中可以通过下面代码获得:
import javax.servlet.ServletContext;
...
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException{
ServletContext application = this.getServletContext();
//将application当成application对象来使用
}
...
值得一提的是,可以使用application实现服务器内跳转。由于servlet和jsp的同质性,常用的servlet内跳转有两种:
(1)重定向(对应jsp中的sendRedirect)
response.sendRedirect("URL地址");
(2)服务器内跳转(对应jsp中的forward)
ServletContext application = this.getServletContext();
RequestDispatcher rd = application.getRequestDispatcher("url地址");
rd.forward(request,response);
这两种在servlet内的跳转与jsp中提到的跳转是等效的。注意,两种情况下的url地址写法不一样。在第一种,如果写绝
对路径,必须将虚拟目录跟目录写在里面,如"/Proj09/page.jsp"而第二种方法中,不需要将虚拟路径根目录写在里
面,如“/page.jsp”
javaEE servlet获取jsp内置对象