2.1简介
servelt是运行在web服务器上Java程序,主要负责处理客户端发来的请求。Servlet一般主要用来处理Http请求,但不仅限于此。
2.2 使用
前端表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<form action="/hello" method="get">
<input type="text" name="test">
<input type="submit" value="提交">
</form>
</body>
</html>
servlet
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf8");
resp.setContentType("text/html");
String s1 = req.getParameter("test");
resp.getWriter().println("<h1>"+s1+"</h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
web.xml注册servlet
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.cloud.test0729.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2.3 servlet工作原理
- 客户端使用浏览器提交对servlet的get或者post请求
- 接收请求后,如果第一次调用servlet,则实例化当前servlet
- 服务器收到请求,调用从父类继承过来的service()方法
- servlet产生回复内容
- 服务器发送回复内容给客户端
2.4 Httpservlet的常用方法
- init()方法:服务器第一次装载该servlet时,执行。
- service()方法:当客户端调用Httpservlet对象时,该方法便会被调用。并且,在调用时会给service方法分别传递一个ServletRequest参数与ServletResponse参数。并且它的默认功能是,调用相应的do方法。就是到底是使用doPost(),还是使用doGet()。并且,该功能在HttpServlet类中已经实现,所以,不管是在doPost调用doGet,还是在doGet里调用doPost,并不会影响请求方式。
- destroy()方法:服务器停止且卸载时,执行。
- GetServletConfig()方法:调用时可以返回servletConfig对象,该对象可以返回初始化参数,与 ServletContext 。
2.5 post与get的区别
- post是安全的,get是不安全的,因为get会在地址栏显示传递的参数,而post并不会。
- post无内容大小要求,get有大小要求。
- post速度比较慢,get速度
注意:servlet不仅可以通过表达访问,也可以直接在地址栏里访问,并且也可以直接跳转。跟网页的使用没有什么却别。