`
百合不是茶
  • 浏览: 351839 次
社区版块
存档分类
最新评论

Servlet的生命周期和MVC设计模式

阅读更多

昨天上课的时候龙哥主要讲了使用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全部的代码分析



 

 

 

 

  • 大小: 62 KB
  • 大小: 24 KB
0
0
分享到:
评论

相关推荐

    servlet生命周期和模版设计模式

    Servlet生命周期和模板设计模式是Java Web开发中的两个关键概念,它们在构建动态Web应用程序时起着至关重要的作用。 首先,让我们深入理解Servlet的生命周期。Servlet是Java编程语言中的一种接口,用于扩展服务器的...

    SERVLET生命周期与JSP生命周期比较

    MVC设计模式是一种将应用分为三个核心部分的架构模式:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于清晰地区分业务逻辑、数据管理和用户界面,从而提高代码的可维护性和可扩展性。 - **模型(Model...

    Servlet 介绍 以及Servlet生命周期(详细)

    通过Servlet处理数据,然后转发到JSP页面进行渲染,形成了经典的Model-View-Controller(MVC)设计模式。 总的来说,Servlet是Java Web开发中的基础,理解和掌握Servlet的生命周期对于开发高效、可靠的Web应用至关...

    基于Servlet和jsp采用mvc模式开发的个人信息管理系统

    3. **MVC设计模式**:MVC是一种将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分的架构模式。在JavaWeb开发中,模型负责处理数据和业务逻辑,视图负责显示结果,而控制器则协调模型和视图...

    Servlet笔记,servlet生命周期、定义

    为了克服这两者的不足,MVC设计模式被引入。MVC模式将Web应用分为三个部分: 1. Model(模型):负责业务功能编写,包括算法的实现、数据库的设计、数据存取等。 2. View(视图):负责界面展示,生成最终展示给用户...

    JAVA面试 jdbc jaee mvc设计模式

    理解Servlet生命周期、会话管理、过滤器和监听器是J2EE面试的重要部分。 MVC(Model-View-Controller)设计模式是Web应用架构的常见选择。模型代表业务逻辑,视图负责展示数据,控制器处理用户输入并协调模型和视图...

    Servlet,JSP和Spring MVC 初学指南源码

    Servlet生命周期包括加载、初始化、服务、销毁等阶段,可以通过重写`service()`方法处理HTTP请求,并通过`doGet()`或`doPost()`方法处理GET和POST请求。在实际应用中,Servlet常用于处理业务逻辑和数据操作。 JSP是...

    JSP、Servlet、MVC

    Servlet生命周期包括初始化(init)、服务(service)和销毁(destroy)三个阶段。当Servlet被首次加载或者配置文件更新时,Web容器会调用init方法进行初始化;service方法用于处理客户端的请求;当Servlet不再需要...

    jsp+servlet+mysql+mvc模式增删改查面试题

    - **Servlet生命周期**:包括初始化、服务、销毁三个阶段,以及doGet和doPost方法。 - **Model-View-Controller的实现**:如何在实际代码中体现Model、View和Controller的职责划分。 - **数据库操作**:使用...

    Servlet JSP Spring MVC初学指南(alin书签).pdf

    Servlet生命周期包括加载、初始化、服务、销毁四个阶段,开发者可以通过重写相应的方法来定制行为。 **JSP(JavaServer Pages)** 是一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码。JSP页面在服务器端...

    servlet及MVC学习实例

    Servlet生命周期包括加载、初始化、服务、销毁四个阶段,它们在服务器启动、首次请求或配置改变时触发。Servlet通过`service()`方法接收客户端请求,然后根据请求类型调用`doGet()`或`doPost()`等方法进行处理。此外...

    第10章基于MVC设计模式的个人信息管理系统项目实训.pptx

    首先,我们回顾了Java Servlet技术的基础知识,包括Servlet的定义、生命周期、技术特点以及与JSP的区别,强调了Servlet在Web项目中的核心作用和部署方法。 接下来,我们探讨了JSP与Servlet的常见用法,例如如何通过...

    深入浅出的理解框架SSH与MVC设计模式 - 副本.docx

    总结来说,学习SSH框架与MVC设计模式,不仅是掌握具体的技术工具,更重要的是理解它们如何实现软件设计的原则,如单一职责原则、开闭原则等,以及如何通过这些框架提高代码质量和开发效率。只有深入理解框架的本质,...

    毕业设计 计算机专业-Java jsp+servlet+javaBean实现MVC-jspmvc

    MVC(Model-View-Controller)模式是一种设计模式,用于将业务逻辑、数据模型和用户界面分离,提高代码的可维护性和可扩展性。 1. **Model(模型)**:模型层是应用程序的核心部分,负责处理业务逻辑和数据操作。在...

    MVC模式(求三角形面积、计算).pptx

    MVC 模式的生命周期包括模型的创建、视图的更新和控制器的处理三个阶段。在模型的生命周期中,servlet 创建 request bean,然后将其存储到模型中。视图更新时,servlet 所请求的 JSP 页面可以使用相应的标记显示该 ...

    java-servlet学习笔记

    Servlet的生命周期分为三个阶段:加载与初始化、服务和销毁。在加载阶段,Web容器会实例化Servlet并调用`init()`方法进行初始化。服务阶段,每当有请求到来,都会调用`service()`方法。最后,当服务器关闭或者Web...

    mvc jsp servlet 实例

    1. **MVC设计模式**:MVC是一种用于构建Web应用程序的架构模式,Model负责处理数据,View负责显示数据,Controller接收用户请求并协调Model和View的交互。 2. **Java Servlet**:Servlet是Java编写的一个服务器端...

    jsp servlet MVC Demo

    MVC模式是一种设计模式,用于将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。在Web开发中,这种模式有助于保持代码的组织和清晰度: 1. 模型(Model):负责存储和管理应用程序...

    [其他类别]jsp+servlet+javaBean实现MVC_jspmvc.zip

    学习这个项目,开发者可以了解MVC模式如何工作,以及如何在实际项目中组织代码,理解JSP、Servlet和JavaBean之间的协作。此外,这也有助于理解HTTP请求生命周期,以及如何使用Java进行服务器端编程。对于初次接触Web...

    web项目servlet,mvc

    Servlet生命周期包括加载、初始化、服务和销毁四个阶段。在描述中提到的"jsp\servlet"整合中,Servlet通常负责处理HTTP请求,执行业务逻辑,并通过RequestDispatcher将控制传递给JSP页面来生成动态内容。 JSP是一种...

Global site tag (gtag.js) - Google Analytics