一、Servlet用途
servlet的目的是根据用户的请求信息为用户生成html文档。
客户端通过HTTP协议向服务器提交请求信息,服务器用HttpServletRequest类对这些信息进行封装,然后把这个类的对象传递给servlet。
也就是说service(HttpServletRequest request, HttpServletResponse response)的形参request是服务器传递给servlet的,而响应信息也进行了封装,响应信息会先存放在HttpServletResponse对象中,服务器再将该对象的信息发送给客户端。
总结:
①HttpServletRequest类封装了客户端到服务器端一系列的请求(如客户端传来的参数、客户端的IP地址是多少)
②HttpServletResponse类封装了服务器端到客户端的答复信息。
举例:
在上一篇博文的基础上新建SecondServlet.java:
package com.hpe.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SecondServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("我的第二个servlet!");
System.out.println("客户端浏览器的类型:" + request.getHeader("User-Agent"));
response.getWriter().println("<h1>Hello Servlet!</h1>");
response.getWriter().println("<h2>Hello Servlet!</h2>");
response.getWriter().println("<hr color='red' />");
}
}
需要对SecondServlet.java进行配置,将以下内容添加到web.xml文件的<web-app></web-app>标签中:
<servlet>
<servlet-name>two</servlet-name>
<servlet-class>com.hpe.servlet.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>two</servlet-name>
<url-pattern>/ttt</url-pattern>
</servlet-mapping>
启动Tomcat服务器,手动运行SecondServlet.java,显示效果如下:
从浏览器直接访问:
总结:
输出流对象的打印方法可以把html标签字符串传递给客户端,浏览器可以将这些字符串解析为html页面,那么我们也可以写一个完整的html文档传过去。
将SecondServlet.java修改如下:
package com.hpe.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SecondServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("我的第二个servlet!");
response.getWriter().println("<html>");
response.getWriter().println("<head>");
response.getWriter().println("<style>.red{ color:red;}</style>");
response.getWriter().println("<script>function test(){ alert('haha')}</script>");
response.getWriter().println("</head>");
response.getWriter().println("<body>");
response.getWriter().println("<input class='red' type='button' value='test' onclick='test();'>");
response.getWriter().println("</body>");
response.getWriter().println("</html>");
// System.out.println("客户端浏览器的类型:" + request.getHeader("User-Agent"));
//
// response.getWriter().println("<h1>Hello Servlet!</h1>");
// response.getWriter().println("<h2>Hello Servlet!</h2>");
// response.getWriter().println("<hr color='red' />");
}
}
等待服务器重写加载完成,手动运行SecondServlet.java,点击test按钮后,显示效果如下:
在浏览器直接访问服务器: