一、Servlet
1.1简介
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
1.2 tomcat容器等级
1.Container 容器,集装箱
2.Engine 引擎容器
3.Host 主机容器
4.Servlet容器(tomcat最低级别的容器,里面包含了一个或多个Context)
一个context对应一个web项目。
Wrapper 容器里的封装部分。
1.2 生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。
init() 方法
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。
service() 方法:
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
doGet() 方法:
GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单。
doPost() 方法:
POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单。
destroy() 方法:
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。
1.3 servlet的九大内置对象
1、out 来源于Java.io.Writer类,它用于发送输出流到客户端。
2、request 来源于javax.servlet.http.HttpServletRequest接口。它被关联到每一个HTTP请求。
3、response 来源于javax.servlet.http.HttpServletResponse。response对象用于把取得的数据返回到客户端。
4、pageContext 提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。
5、session 来源于javax.servlet.http.HttpSession。它用于存储客户端请求的信息,因此它是有状态交互式的。
6、application 来源于javax.servlet.ServletContext。
7、config 来源于ServletConfig,它包含了当前JSP/Servlet所在的WEB应用的配置信息。
8、page 来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。
9、exception 用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。
1.4 servlet获取表单元素
getParameter() 方法用于获取某个指定的参数,而 getParameterValues() 方法用于获取多个同名的参数。
例:
先创建一个index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>xxx登录</title>
</head>
<body>
<form action="/project/LoginServlet" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
性别:<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女">女<br>
爱好:<input type="checkbox" name="hobby" value="运动">运动
<input type="checkbox" name="hobby" value="赚钱">赚钱
<input type="checkbox" name="hobby" value="编码">编码<br>
<input type="submit" value="提交">
</form>
</body>
</html>
再编写一个获取表单的LoginServlet.java:
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
/**
* 处理前端get请求
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("get请求处理未实现!");
}
/**
* 处理前端post请求
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String gender = request.getParameter("gender");
//注意hobby可能有多个,所以需要使用字符串数组获取
String[] hobbies = request.getParameterValues("hobby");
System.out.println(username);
System.out.println(password);
System.out.println(gender);
System.out.println(Arrays.toString(hobbies));
}
}
二、MVC
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
View(视图) - 视图代表模型包含的数据的可视化。
Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。