昨天上课的时候龙哥主要讲了使用MVC模式和oracle的数据分页,昨天上课被oracle的数据分页搞得稀里糊涂的,所以今天重新自己再重新的过一遍,本来是准备今天搞ajax的,没办法咯
MVC设计模式,m模型 v 数据显示 c 数据的逻辑处理 ,所有的设计模式都只是一个固定的写法
1,Servlet的生命周期和工作原理 (来自网络资源):
Servlet生命周期分为三个阶段:
1,初始化阶段 调用init()方法
2,响应客户请求阶段 调用service()方法
3,终止阶段 调用destroy()方法
Servlet初始化阶段:
在下列时刻Servlet容器装载Servlet:
1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码:
<loadon-startup> 1 </loadon-startup>
|
2,在Servlet容器启动后,客户首次向Servlet发送请求
3,Servlet类文件被更新后,重新装载Servlet
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。
Servlet工作原理:
首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet,doPost等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。
每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。
2,MVC模式的实现; 实现数据显示,数据处理,模型三大模块的分离
步骤:
1.定义一个主控Servlet--->[ControlServlet] 2.定义一个处理类的接口--->[ActionInterface] 3 数据库的处理来的javabean保存数据的定义 4.定义一个登录处理类 --->[LoginAction] 5.在web.xml中配置Servlet,将处理类作为Servlet的初始化参数进行配置
代码如下;
1,定义一个主控Servlet--->[controlServlet]
package servletMvc; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import configControlServlet.ActionInterface; /** * * @author Administrator 主控制器的Servlet 1.接受请求 2,将数据转发到对应的Servlet中处理 3.转发到试图层 */ public class controlServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获得请求的路径 String uri = request.getRequestURI(); uri = uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf(".")); System.out.println("请求的路径" + uri); // 将登陆请求转交给登陆的Servlet处理 String className = this.getInitParameter(uri); System.out.println(className); //根据反射得到该类的Class对象 try { //根据获得的包,进行反射得到class对象 Class c = Class.forName(className); //根据class对象创建对象,返回的是LoginAction类实现的接口 ActionInterface ac= (ActionInterface)c.newInstance(); //通过对象调用ac的方法 String str= ac.exectu(request, response); //判断LoginAction类中返回的结果是否null,不为null就会返回一个地址 if(str!=null){ //跳转 request.getRequestDispatcher(str).forward(request, response); } } catch (Exception e) { e.printStackTrace(); request.getRequestDispatcher("Error.jsp").forward(request, response); } } }
2.定义一个处理类的接口--->[ActionInterface]
package configControlServlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /* *每个类都必须要实现这个接口 */ public interface ActionInterface { public String exectu(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException; }
3 数据库的处理来的javabean保存数据的定义
3,1 数据库的连接单例模式
package Servlet.db; import java.sql.Connection; import java.sql.DriverManager; /** * * * @author Administrator *数据库的连接类 */ public class DBUtil { public static Connection conn =null ; private DBUtil(){ } public static Connection getConn(){ if(conn!=null){ return conn; } try{ Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; conn= DriverManager.getConnection(url,"SCOTT", "tiger"); return conn; }catch(Exception e){ e.printStackTrace(); return null; } } }
3,2 处理数据查询的类
package Servlet.db; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import Servlet.bean.User; //处理数据查询的类 public class UserDao { public User getCheck(String userName,String userPwd){ //获得连接对象 Connection conn=DBUtil.getConn(); //定义sql语句 String sql="select usermailandphone,userpwd from bookeuser where usermailandphone=? and userPwd=?"; //预编译 try{ PreparedStatement pstm=conn.prepareStatement(sql); pstm.setString(1, userName); pstm.setString(2, userPwd); ResultSet rs=pstm.executeQuery(); System.out.println(sql); if(rs.next()){ //创建对象,使用javaBean来处理数据 User user= new User(); user.setUserName(rs.getString(1)); user.setUserPwd(rs.getString(2)); return user; } }catch(Exception e){ e.printStackTrace(); } return null; } }
3,3保存账号和密码的类javaBean
package Servlet.bean; /** * * @author Administrator *保存账号和密码的类 javaBean */ public class User { private String userName; private String userPwd; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } }
4.定义一个登录处理类 --->[LoginAction]
package configControlServlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import Servlet.bean.User; import Servlet.db.UserDao; /** * * @author Administrator * */ public class LoginAction implements ActionInterface{ UserDao dao = new UserDao(); @Override public String exectu(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { System.out.println("达到了登陆的Servlet"); //获取登陆的用户和密码 String userName = request.getParameter("usernames"); String userPwd=request.getParameter("userpwd"); //连接数据库查询 User user =dao.getCheck(userName, userPwd); if(user!=null){ //保存绘画中 HttpSession session=request.getSession(); session.setAttribute("user", user); //返回登陆成功的页面 return "LoginSuss.jsp"; } //返回到登陆失败的页面 return "Error.jsp"; } }
5.在web.xml中配置Servlet,将处理类作为Servlet的初始化参数进行配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>MVC</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description>主控制的Servlet</description> <servlet-name>controlServlet</servlet-name> <servlet-class>servletMvc.controlServlet</servlet-class> <init-param> <description>处理登陆的登陆的servlet</description> <param-name>login</param-name> <param-value>configControlServlet.LoginAction</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>controlServlet</servlet-name> <url-pattern>*.ser</url-pattern> </servlet-mapping> </web-app>
6,jsp代码;简单的显示页面这里就不写了
上面MVC全部的代码分析
相关推荐
Servlet生命周期和模板设计模式是Java Web开发中的两个关键概念,它们在构建动态Web应用程序时起着至关重要的作用。 首先,让我们深入理解Servlet的生命周期。Servlet是Java编程语言中的一种接口,用于扩展服务器的...
MVC设计模式是一种将应用分为三个核心部分的架构模式:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于清晰地区分业务逻辑、数据管理和用户界面,从而提高代码的可维护性和可扩展性。 - **模型(Model...
通过Servlet处理数据,然后转发到JSP页面进行渲染,形成了经典的Model-View-Controller(MVC)设计模式。 总的来说,Servlet是Java Web开发中的基础,理解和掌握Servlet的生命周期对于开发高效、可靠的Web应用至关...
3. **MVC设计模式**:MVC是一种将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分的架构模式。在JavaWeb开发中,模型负责处理数据和业务逻辑,视图负责显示结果,而控制器则协调模型和视图...
为了克服这两者的不足,MVC设计模式被引入。MVC模式将Web应用分为三个部分: 1. Model(模型):负责业务功能编写,包括算法的实现、数据库的设计、数据存取等。 2. View(视图):负责界面展示,生成最终展示给用户...
理解Servlet生命周期、会话管理、过滤器和监听器是J2EE面试的重要部分。 MVC(Model-View-Controller)设计模式是Web应用架构的常见选择。模型代表业务逻辑,视图负责展示数据,控制器处理用户输入并协调模型和视图...
Servlet生命周期包括加载、初始化、服务、销毁等阶段,可以通过重写`service()`方法处理HTTP请求,并通过`doGet()`或`doPost()`方法处理GET和POST请求。在实际应用中,Servlet常用于处理业务逻辑和数据操作。 JSP是...
Servlet生命周期包括初始化(init)、服务(service)和销毁(destroy)三个阶段。当Servlet被首次加载或者配置文件更新时,Web容器会调用init方法进行初始化;service方法用于处理客户端的请求;当Servlet不再需要...
- **Servlet生命周期**:包括初始化、服务、销毁三个阶段,以及doGet和doPost方法。 - **Model-View-Controller的实现**:如何在实际代码中体现Model、View和Controller的职责划分。 - **数据库操作**:使用...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段,开发者可以通过重写相应的方法来定制行为。 **JSP(JavaServer Pages)** 是一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码。JSP页面在服务器端...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段,它们在服务器启动、首次请求或配置改变时触发。Servlet通过`service()`方法接收客户端请求,然后根据请求类型调用`doGet()`或`doPost()`等方法进行处理。此外...
首先,我们回顾了Java Servlet技术的基础知识,包括Servlet的定义、生命周期、技术特点以及与JSP的区别,强调了Servlet在Web项目中的核心作用和部署方法。 接下来,我们探讨了JSP与Servlet的常见用法,例如如何通过...
总结来说,学习SSH框架与MVC设计模式,不仅是掌握具体的技术工具,更重要的是理解它们如何实现软件设计的原则,如单一职责原则、开闭原则等,以及如何通过这些框架提高代码质量和开发效率。只有深入理解框架的本质,...
MVC(Model-View-Controller)模式是一种设计模式,用于将业务逻辑、数据模型和用户界面分离,提高代码的可维护性和可扩展性。 1. **Model(模型)**:模型层是应用程序的核心部分,负责处理业务逻辑和数据操作。在...
MVC 模式的生命周期包括模型的创建、视图的更新和控制器的处理三个阶段。在模型的生命周期中,servlet 创建 request bean,然后将其存储到模型中。视图更新时,servlet 所请求的 JSP 页面可以使用相应的标记显示该 ...
Servlet的生命周期分为三个阶段:加载与初始化、服务和销毁。在加载阶段,Web容器会实例化Servlet并调用`init()`方法进行初始化。服务阶段,每当有请求到来,都会调用`service()`方法。最后,当服务器关闭或者Web...
1. **MVC设计模式**:MVC是一种用于构建Web应用程序的架构模式,Model负责处理数据,View负责显示数据,Controller接收用户请求并协调Model和View的交互。 2. **Java Servlet**:Servlet是Java编写的一个服务器端...
MVC模式是一种设计模式,用于将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。在Web开发中,这种模式有助于保持代码的组织和清晰度: 1. 模型(Model):负责存储和管理应用程序...
学习这个项目,开发者可以了解MVC模式如何工作,以及如何在实际项目中组织代码,理解JSP、Servlet和JavaBean之间的协作。此外,这也有助于理解HTTP请求生命周期,以及如何使用Java进行服务器端编程。对于初次接触Web...
Servlet生命周期包括加载、初始化、服务和销毁四个阶段。在描述中提到的"jsp\servlet"整合中,Servlet通常负责处理HTTP请求,执行业务逻辑,并通过RequestDispatcher将控制传递给JSP页面来生成动态内容。 JSP是一种...