`
zxxSsdsd
  • 浏览: 9502 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java web MVC

    博客分类:
  • j2ee
MVC 
阅读更多
前端时间学习了 MVC 模式,现在来谈谈自己对MVC的认识:

MVC是三个单词的缩写:M,Model(模型);V,View( 视图 ),C,Control(控制)。
MVC模式的目的就是实现Web系统的职能分工,
Model层:实现系统的业务逻辑,即javaBean部分
View层:负责与用户交互,即在界面上展示数据对象给用户,即html,jsp
Control层:Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,当然就是Servlet的职责了

下面我们用MVC设计模式来实现 简单的用户登录过程
1、控制器Servlet的实现
系统中只有一个servlet即ControlServlet,所有页面发起的以"  *.do  "的请求,都被web.xml配置给ControlServlet进行处理,在ControlServlet中根据‘ * ’的字符串(即解析用户请求的路径),调用ActionFactory生成的制定Action对象,在将处理后的URL转发给用户。

Java代码 
package cn.netjava.servlet; 
 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import cn.netjava.action.Action; 
import cn.netjava.action.ActionFactory; 
 
/**
* Servlet implementation class ControlServlet
*/ 
public class ControlServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
 
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        //得到当前Servlet的请求路径 
        String pathName =request.getServletPath(); 
        // request.getContextPath();得到项目名字 
        System.out.println("pathName:"+pathName); 
        //得到请求的Action名字 
        int index = pathName.indexOf("."); 
        String ActionName = pathName.substring(1, index); 
        System.out.println(ActionName); 
        //获取运行时参数 
        String ActionClassName = this.getInitParameter(ActionName); 
        //得到Action对象 
        Action action = ActionFactory.getActionFactory().getAction(ActionClassName); 
        //执行Action的execute得到要返回的URL路径 
        String url = action.execute(request, response); 
        if(url==null){ 
            request.getRequestDispatcher("error.jsp").forward(request, response);    
        }else{ 
            request.getRequestDispatcher(url).forward(request, response); 
        } 
    } 
 



2、Action对象工厂类实现:

ActionFactory是一个单实例类(整个系统只需要使用其一个对象),它只提供一个Action对象,通过getAction(String ActionClassName) 的方法调用创建一个Action对象。这个方法在Control中被调用。代码如下:  

Java代码 
package cn.netjava.action; 
/**
* 根据Action名字,创建Action对象
* @author Administrator
*
*/ 
public class ActionFactory { 
 
    //单例模式:不需要创建对象 
    private ActionFactory(){ 
    } 
    //单实例访问方法,得到ActionFactory对象 
    public static ActionFactory getActionFactory(){ 
        if(af == null){ 
            af = new ActionFactory(); 
        } 
        return af; 
    } 
    /**
     * 根据具体的Action类名字创建Action对象
     * @param ActionClassName :具体的Action类全名
     * @return:Action类型对象
     */ 
    public Action getAction(String ActionClassName){ 
        Action action = null; 
        try{ 
            action = (Action) Class.forName(ActionClassName).newInstance(); 
        }catch(Exception e){ 
            e.printStackTrace(); 
        } 
        return action; 
    } 
     
    private static ActionFactory af; 
     
     


3、Action接口类定义:
所有的事件处理(即Action)类都必须实现这个接口
Java代码 
package cn.netjava.action; 
 
public interface Action { 
    /**
     * 所有的具体Action实现这个接口
     * @param request 请求对象
     * @param response 应答对象
     * @return :结果页面
     */ 
    public String execute(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response); 
     

4、web.xml中配置请求发送给控制器Servlet

最后,我们只需要在wex.xml中对MVC结构的配置:
视图页面中的请求都是以<动作名字>.do结尾,当这个请求到达web服务器后,会被服务器转向给控制器处理,控制器在根据解析出的动作名,调用对应的Action对象,处理结果,并输出结果页面,所以web.xml中必须有如下配置:
Java代码 
<servlet> 
    <servlet-name>controlServlet</servlet-name> 
    <servlet-class>cn.netjava.servlet.ControlServlet</servlet-class> 
    <init-param> 
        <param-name>loginAction</param-name> 
        <param-value>cn.netjava.action.LoginAction</param-value> 
    </init-param> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>controlServlet</servlet-name> 
    <url-pattern>*.do</url-pattern> 
  </servlet-mapping> 
4、具体的Action类实现(即对登录动作进行处理的类)

Java代码 
package cn.netjava.action; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
public class LoginAction implements Action { 
 
    public String execute(HttpServletRequest request, 
            HttpServletResponse response) { 
        // 得到用户名和密码 
        String userName = request.getParameter("userName"); 
        String userPwd = request.getParameter("userPwd"); 
        if (userName.equals("netjava") && userPwd.equals("netjava")) { 
            request.setAttribute("userName", userName); 
            return "main.jsp"; 
        } else { 
            return "login.jsp"; 
        } 
    } 
 

如果登录成功,跳转到 main.jsp页面,否则,返回login,jsp页面

以下是main.jsp和login.jsp页面:
main.jsp
Html代码 
<%@ page language="java" contentType="text/html; charset=utf-8" 
    pageEncoding="utf-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Insert title here</title> 
</head> 
<body> 
<h1 style="color:red"><%=request.getAttribute("userName") %>登录成功</h1> 
</body> 
</html> 
login.jsp
Html代码 
<%@ page language="java" contentType="text/html; charset=utf-8" 
    pageEncoding="utf-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>用户登录</title> 
</head> 
<body> 
<form action="loginAction.do" method="post"> 
    用户名:<input type="text" name="userName" id="userName"><br> 
    密码:<input type="password" name="userPwd" id="userPwd"><br> 
    <input type="submit" value="登录"/> 
</form> 
</body> 
</html> 

最后做个总结吧:以前我们与服务器进行交互,可能jsp页面和servlet中都将html和java代码参杂在一起,这会导致系统的系统维护困难、分工不清;例如在加有jsp代码段的网页中,程序员与美工之间的配合就非常困难!MVC结构的系统会从根本上强制我们将web系统中的数据对象、业务逻辑、用户界面三者分离,使得程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
分享到:
评论

相关推荐

    java web MVC的实现

    Java Web MVC模式是一种广泛应用于构建Web应用程序的设计模式,它将应用程序分为三个主要组件:Model(模型)、View(视图)和Controller(控制器)。这个模式的主要目的是实现业务逻辑、数据处理和用户界面之间的...

    java web MVC项目

    Java Web MVC项目是一种基于模型-视图-控制器(Model-View-Controller)架构模式的Web应用程序开发方式。这种模式在Java领域中广泛应用于构建可维护、可扩展且结构清晰的Web应用。在这个项目中,我们将深入探讨MVC...

    基于Java Web MVC框架的电力班组智能化管理系统.pdf

    "基于Java Web MVC框架的电力班组智能化管理系统" 本文介绍了基于Java Web MVC框架的电力班组智能化管理系统的设计和实现。该系统旨在解决当前电力班组管理中存在的人力资源浪费、信息不完善、缺乏智能化管理等问题...

    Java Web MVC开发完整架包,工具类.zip

    Java Web MVC框架是用于构建动态Web应用程序的一种常见架构模式,其中MVC代表Model-View-Controller。本资源“Java Web MVC开发完整架包,工具类.zip”包含了一个完整的开发环境和一些实用工具类,这对于Java Web...

    基于Java Web MVC框架的学生成绩管理系统设计.zip

    【Java Web MVC框架详解】 Java Web MVC框架是开发Web应用程序的一种常见模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种框架设计允许开发者将业务逻辑、数据处理和...

    基于Java Web MVC框架的学生成绩管理系统设计.pdf

    1. Java Web技术应用:文档提到利用Java Web技术开发学生成绩管理系统。Java Web技术主要指基于Java语言的网络编程技术,包括Servlet、JSP(Java Server Pages)、Java Beans以及框架如Spring、Struts、Hibernate等...

    jsp ssh mvc java web j2ee bs 在线考试系统+论文+源码 网页设计

    《基于JSP SSH MVC的Java Web在线考试系统详解》 在线考试系统是现代教育技术发展的重要成果,它利用互联网技术,实现了考试的无纸化、自动化。本系统以JSP(JavaServer Pages)为核心,结合SSH(Struts、Spring、...

    spring.jar spring-webmvc-struts.jar spring-webmvc.jar

    标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...

    Java -Web -MVC

    Java Web MVC设计模式详解 在Java Web开发领域,MVC(Model-View-Controller)设计模式是一种广泛应用的架构模式,它将应用程序分为三个主要部分,从而实现职责分离,提高代码的可维护性和可扩展性。本示例通过使用...

    使用MVC模式的Java Web Demo实例

    使用C3p0+MVC模式搭建的Java Web工程,含相应数据表的建表Sql文件。数据库用MySQL数据库,页面视图使用jsp页面,通过Servlet的设计,仅用一个Web页面实现数据表增删改查功能的展示。数据表对各种数据类型都做了测试...

    基于MVC框架的java web开发

    **基于MVC框架的Java Web开发** 在Java Web开发领域,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以实现业务...

    第8讲__MVC模式的Java_Web应用程序.ppt

    第8讲__MVC模式的Java_Web应用程序.ppt

    springfox-spring-webmvc-3.0.0-API文档-中英对照版.zip

    标签:spring、springfox、webmvc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    springfox-spring-webmvc-3.0.0-API文档-中文版.zip

    标签:spring、springfox、webmvc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    spring-webmvc-5.2.15.RELEASE-API文档-中文版.zip

    标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    java web采用mvc模式,适合初学者的留言板

    Java Web MVC模式是一种广泛应用于构建Web应用程序的架构模式,它将应用程序分为三个主要部分:Model(模型)、View(视图)和Controller(控制器)。对于初学者来说,理解并掌握这种模式是进阶Web开发的关键步骤。 ...

    java_web项目mvc框架demo

    **Java Web MVC框架详解** Java Web项目中的MVC(Model-View-Controller)框架是一种广泛使用的软件设计模式,尤其在构建动态、数据驱动的Web应用时。MVC将应用程序的逻辑划分为三个主要部分,提高了代码的可维护性...

    sentinel-spring-webmvc-adapter-1.8.0-API文档-中英对照版.zip

    标签:spring、alibaba、csp、sentinel、adapter、webmvc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    spring-webmvc-5.3.15-API文档-中文版.zip

    标签:spring、webmvc、springframework、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    sentinel-spring-webmvc-adapter-1.8.0-API文档-中文版.zip

    标签:spring、alibaba、csp、sentinel、adapter、webmvc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变...

Global site tag (gtag.js) - Google Analytics