1. MVC: Model View Controller
处理过程:
1.用户发请求
2.Servlet接收请求数据,并调用对应的业务逻辑方法
3.业务处理完毕,返回更新后的数据给servlet
4.servlet转向到JSP,由JSP来渲染页面
5.响应给前端更新后的页面
职责分析:
Controller:控制器 (servlet)
1.取得表单数据
2.调用业务逻辑
3.转向指定的页面
Model:模型(dao 层)
1.业务逻辑
2.保存数据的状态
View:视图(html jsp等)
1.显示页面
2. Servlet
实现了Servlet接口的类就是一个servlet。 一般采用继承HttpServlet类来实现servlet,因为HttpServlet类继承了GenericServlet类,而GenericServlet类实现了Servlet接口。
其次Servlet接口中有一个重要的抽象方法叫service(ServletRequest req , ServletResponse resp),它是我们写的具体操作,通过req对象的调用来处理响应http请求报文,处理结果resp返回给响应报文。具体流程如下图:
这个web容器就相当于我用的tomcat
关于servlet,当写好servlet类之后 要在web.xml文件中注册,目的是告诉web我们的servlet的地址url等信息,使得网页可以访问到这个资源。就像下面一样
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.chang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
3.HttpServletRequest类的作用及方法
先看一段狂神示例的代码:
package com.chang.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取前端参数
String method = req.getParameter("method");
if (method.equals("add")){
req.getSession().setAttribute("msg","执行了add方法");
}
if (method.equals("delete")){
req.getSession().setAttribute("msg","执行了delete方法");
}
//2.调用业务层
//3.视图转发或者重定向
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
这里获取前端的参数method就相当于获取前端提交过来的表单的参数信息。
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").表示将请求转发给另一个servlet,这个servlet地址信息为"/WEB-INF/jsp/test.jsp",然后通过forward方法走向这个servlet.
偷懒了.....