既然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实现server内跳转。因为servlet和jsp的同质性,经常使用的servlet内跳转有两种:
(1)重定向(相应jsp中的sendRedirect)
response.sendRedirect("URL地址");
(2)server内跳转(相应jsp中的forward)
ServletContext application = this.getServletContext();
RequestDispatcher rd = application.getRequestDispatcher("url地址");
rd.forward(request,response);
这两种在servlet内的跳转与jsp中提到的跳转是等效的。注意,两种情况下的url地址写法不一样。在第一种,假设写绝
对路径,必须将虚拟文件夹跟文件夹写在里面,如"/Proj09/page.jsp"而另外一种方法中,不须要将虚拟路径根文件夹写在里
面,如“/page.jsp”