第四次作业的练习:
https://gitee.com/cai-still/bulemsun_homework2022/blob/1e6f37cd2a927dca19ea5c84848e2b4fafcfc448/jsphomework/%E7%AE%80%E6%98%93%E8%AE%A1%E7%AE%97%E5%99%A8/count1.jsp
写的有很多瑕疵:
1.密码输入的时候密码是可以看到的(不是的是不是浏览器的问题)
2.计算器只能进行整数的运算,还不能进行小数的运算
下面是Servlet+mvc的预习
一、Servlet
(内容参考https://www.cnblogs.com/whgk/p/6399262.html)
1.1servlet是什么
Servlet是Server Applet的简称,而Server Applet翻译过来是服务器小程序,就是运行在服务端的小程序,由sun公司提供的一门用于开发动态Web资源的技术。(就是一个小程序,运行在服务器上,用来处理服务器接受到的请求并发送响应)
浏览器通过网址来访问服务器:
1.2tomcat和servlet的关系
Tomacat是Web应用服务器,是一个Servlet/JSP容器,(既然是容器,就在tomcat框架里面),作为Servlet容器,负责处理客户的请求,把请求传送给Servlet,然后把Servlet的响应传送回给客户。
可以看出:Servlet是Tomcat服务器上的小程序
1.3手动编写servlet
为什么需要servlet?——实现动态网页
web服务器不能提供动态即时页面,不能往数据库保存数据,如果需要一个动态的内容,则需要web服务器上另外一辅助程序帮助(web服务器会调用这个辅助程序实现动态内容的展现)。而servlet就是辅助应用程序。
- 创建一个MyServlet继承HttpServlet,重写doFet和doPost
- 在web.xml中配置MyServlet
(下述代码有些许问题,会在课上好好听出错原因,并会在课后改正)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>first</title>
</head>
<body>
<form action="Servlet01" name="login" method="get">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="确认登录"></td>
</tr>
</table>
</form>
</body>
</html>
package servletwork;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("Servlet01")
public class Servlet01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
request.setCharacterEncoding("utf-8");
System.out.println("正在处理post()请求");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet");
request.setCharacterEncoding("utf-8");
System.out.println("正在处理get()请求");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
}
}
1.4详解创建servlet的原理
1.servlet的生命周期是什么?
服务器启动时(web.xml中配置load-on-startup=1,默认为0)或者第一次请求该servlet时,就会初始化一个Servlet对象,也就是会执行初始化方法init(ServletConfig conf)
该servlet对象去处理所有客户端请求,在service(ServletRequest req,ServletResponse res)方法中执行
最后服务器关闭时,才会销毁这个servlet对象,执行destroy()方法。
2.为什么创建的servlet是继承自httpServlet,而不是直接实现Servlet接口?
3.servlet的生命周期中,可以看出,执行的是service方法,为什么我们就只需要写doGet和doPost方法呢?
详解见:https://www.cnblogs.com/whgk/p/6399262.html
比较抽象,没有读太懂
二、MVC
2.1
MVC(Model View Controller)
M是指业务模型
V是指用户界面
C则是控制器
使用MVC的可以将M和V实现代码分离,从而使同一个程序可以使用不同的表现形式。
使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
最典型的MVC就是JSP + servlet + javabean的模式。
所以上述Servlet在mvc中担任的作用是Controller控制器,对数据进行操控作用。