JavaWb(一)Servlet

·Servlet的主要功能、运行过程以及生命周期

1.在Servlet技术体系中,用户创建的Servlet是通过HTTPServlet派生的。HTTPServlet的主要方法有init()、destory()、service()、doGet()、doPost()等。

  (1)init():在Servlet的生命周期中,init()方法只执行一次,它是在服务器装入Servlet时执行的。常用默认方法,也可以自己重写覆盖。

  (2)destroy():destroy()方法只执行一次,在服务器卸载Servlet时执行该方法。常用默认方法,也可以自己重写覆盖。

  (3)service():Service方法是Servlet的核心。每当一个客户请求一个HTTPServlet对象时,该对象的service()方法就要被调用。系统将请求(ServletRequest)对象和响应(ServletResponse)对象传给它。

  上面三种方法直接继承,不必重写(特殊情况例外)。对于do方法,用户必须重写,处理get或post等请求。

2.Servlet的运行过程

  2.1web端服务器接收到客户端访问的请求。

  2.2装载并创建一个该Servlet的实例对象。

  2.3调用init()方法。

  2.4创建两个对象,用于封装HTTP请求消息的HttPServletRequest对象和用于HTTP响应消息的HTTPServletResponse对象。

  2.5Tomcat为其创建或者分配线程(第一次请求该Servlet为创建,以后则为分配)。

  2.6调用Servlet的service()方法,该方法根据请求类型的不同调用doGet()、doPost()或者其他方法。

  2.7WEB应用程序停止或者重启前,Servlet将被卸载,卸载之前调用destory()方法。  

3.Servlet的生命周期:加载,实例化,初始化,服务,销毁。Servlet的生命周期不长于容器生命周期。

  3.1加载和实例化过程只有一次(调用init()),这个过程可能是Tomcat容器启动时执行,也可能是第一次访问这个Servlet执行,这取决于容器的配置文件。

  3.2服务过程(调用service())可进行多次,一次服务过程就是一个Servlet线程的运行过程。service(ServletRequest request,ServletResponse response)方法在每次访问时必然执行。

  3.3当容器关闭,执行销毁(destroy()),销毁实例。

doGet()和doPost()方法的区别:

  1、安全性:get的安全性低。post的安全性高。

Servlet在web.xml中的配置

实现一个简单的登录功能。

一个简单的登录框。

通过ajax向后端传递数据,返回error登录失败,否则登录成功。

```

public class BookServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
String num = request.getParameter("pagenum");
String size = request.getParameter("pageSize");
int pageNum = Integer.parseInt(num);
int pageSize = Integer.parseInt(size);
BookDAO bookDAO = new BookDAOImpl();
List<Book>list = bookDAO.findBooks(pageNum,pageSize);
JSONArray dataBooks = JSONArray.fromObject(list);
out.write(dataBooks.toString());
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}
}

```

servlet代码,前面是请求的方式选择的是post。获取到前端账号密码之后,调用业务逻辑层,UserService中的judgeLog方法。

```

public class UserServiceImpl implements UserService{
public boolean judgeLogin(String userName,String userPwd){
UserDao userDao = new UserDaoImpl();
if(userDao.findUser(userName,userPwd)) {
return true;
}
return false;
}
}

```

UserService实现代码。

dao层实现代码。连接mysql数据库,因为没有用框架,自己写了一个连接数据库的工具类。

最后输入正确的账号密码,提示登录成功。

posted on 2019-10-25 10:20  MarcoRe  阅读(267)  评论(0)    收藏  举报

导航