文章目录
第十一章JSP开发模型
一、jspJSP开发模型

  1. jsp Model1
    图里是JSP Model1前JSP开发的早期模型和 JSPModel1 的工作原理
    2.jsp Model2
    二、 MVC模型的设计
  2. Model2思想实现用户注册功能
    2.实现步骤
    1.创建项目,编写JAVABean
    2.创建工具类
    3.创建Servlet
    4.创建JSP页面
    1.在项目WebContent目录下创建register.jsp文件,该文件是用户注册的表单页面,用于接收用户的注册信息。
    2.在项目WebContent目录下创建loginSuccess.jsp文件,该文件是用户登入成功的页面。
    5 运行程序,测试结果
    本章小结
    如果因需要更新页面而不得不对业务逻辑代码进行改动,或者要在不同的模块中应用相同的功能时重复地编写业务逻辑代码,不仅会降低整体程序开发的进程,而且会使程序变得难以维护。因此,将业务逻辑代码与外观呈现分离,将会更容易地根据需求的改变来改进程序。MVC 模式的模型如图所示。
    1.编写UserBean类
    在Eclipse中创建一个chapter11的web项目,在项目的src目录下创建包,在包中创建

原文链接:https://blog.csdn.net/qq_55689375/article/details/122385336
第十一章JSP开发模型
JSP技术在Web应用程序的开发过程中应用十分广泛,它功能强大,是当前流行的动态网页技术标准之一。使用JSP技术开发Web应用程序,有两种开发模型可供选择,通常我们称为JSP Model1和 JSP Model2.

一、jspJSP开发模型

  1. jsp Model1
    图里是JSP Model1前JSP开发的早期模型和 JSPModel1 的工作原理

2.jsp Model2
JSPModel1 虽然将数据和部分的业务逻辑从 JSP 页面中分离出去,但是 JSP 页面仍然需要负责流程控制和产生用户界面。对于一个业务流程复杂的大型应用程序来说,在 JSP 页面中依旧会嵌入大量的 Java 代码,这样会给项目管理带来很大的麻烦。为了解决这样的问题,SUN 公司在 Model1 的基础上又提出了JSPModel2 架构模型。
JSP Model2架构模型采用 JSP + Servlet + JavaBean 的技术,此技术将原本 JSP 页面中的流程控制代码提取出来,封装到 Servlet 中,从而实现了整个程序页面显示、流程控制和业务逻辑的分离。
实际上,JSP Model2 模型就是 MVC (模型Model - 视图View - 控制器Controller)设计模式。其中,控制器的角色是由 Servlet 实现的,视图的角色是由 JSP 页面实现的,模型的角色是由 JavaBean 实现的。JSP Model2的工作原理,如图所示:

二、 MVC模型的设计
它是施乐帕克研究中心在 20 世纪 80 年代为编程语言 Smalltalk–80 发明的一种软件设计模式,提供了一种按功能对软件进行模块划分的方法。MVC 设计模式将软件程序分为 3 个核心模块:模型( Model ) 视图( View ) 和 控制器( Controller ),这3个模块的作用如下所示。

1.模型
模型(Model) 负责管理应用程序的业务数据、定义访问控制以及修改这些数据的业务规则。当模型的状态发生改变时,它会通知视图发生改变,并为视图提供查询模型状态的方法。
2.视图
视图(View) 负责与用户进行交互,它从模型中获取数据向用户展示,同时也能将用户请求传递给控制器进行处理。当模型的状态发生改变时,视图会对用户界面进行同步更新,从而保持与模型数据的一致性。
3…控制器
控制器( Controller ) 是负责应用程序中处理用户交互的部分,它负责从视图中读取数据,控制用户输入,并向模型发送数据。
它们之间的关系如图:

  1. Model2思想实现用户注册功能
    务目标
    学会使用 JSP Model2 模型开发程序。
    JSP Model2 模型是一种 MVC 设计模式,由于 MVC 模式中的功能模块相互独立,并且使用该模式的软件具有极高的可维护性、可扩展性和可复用性,因此,使用MVC 开发模式的 Web应用越来越受到欢迎。接下来,本任务将按照 JSP Model2 的模型思想编写一个用户注册程序。该程序中包含两个 JSP 页面 register.jsp 和loginSuccess jsp、一个 Servlet类ControllerServlet。两个 JavaBean 类RegisterFormBean 和 UserBean,以及一个访问数据库的辅助类 DBUtil,这
    些组件的关系如图所示。

( 1 ) UserBean 是代表用户信息的 JavaBean,ControllerServlet 根据用户注册信息创建出一个UserBean对象,并将对象添加到 DBUtil 对象中,loginSuccess.jsp 页面从 UserBean 对象中提取用户信息进行显示。
( 2 ) RegisterFormBean 是封装注册表单信息的 JavaBean,用于对从 ControllerServlet 中获取到的注册表单信息中的各个属性(也就是注册表单内的各个字段中所填写的数据)进行校验。
( 3 ) DBUtil 是用于访问数据库的辅助类,它相当于一个 DAO (数据访问对象)。
( 4 ) ControllerServlet 是控制器,它负责处理用户注册的请求。如果注册成功,就会跳到 loginSuccess.jsp页面;如果注册失败,重新跳回到 register.jsp 页面并显示错误信息。
( 5 ) register.jsp 是显示用户注册表单的页面,它将注册请求提交给 ControllerServlet 程序处理。
( 6 ) loginSuccess.jsp 是用户登录成功后进入的页面,新注册成功的用户自动完成登录,直接进入 loginSuccess.jsp 页面。

2.实现步骤
1.创建项目,编写JAVABean
在Eclipse中创建一个名称为chapter12的web项目, 在项目的src目录下创建包cn.itcast.chapter11.model2.domain,在包中定义UserBean类,用来封装用户信息。

package cn.itcast.chapter11.model2.domain;
/**

  • 用来封装用户的基本参数
  • @author apple

*/
public class UserBean {
private String name;
private String password;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}

}

package cn.itcast.chapter11.model2.domain;

import java.util.HashMap;
import java.util.Map;

public class RegisterFormBean {

//1.用来封装注册参数的
private String name;
private String password;
private String password2;
private String email;
public String getName() {return name;
}
public void setName(String name) {this.name = name;
}
public String getPassword() {return password;
}
public void setPassword(String password) {this.password = password;
}
public String getPassword2() {return password2;
}
public void setPassword2(String password2) {this.password2 = password2;
}
public String getEmail() {return email;
}
public void setEmail(String email) {this.email = email;
}
//------------进行服务端的数据-----------------------
//2.定义变量来接收用户校验的信息,比如说用户名、邮箱是否符合规范,
//第一个参数 属性名称  第二个参数:属性值是否符合规范信息,比如(“email”,”邮箱格式有误“);
private Map<String,String> errors = new HashMap<String,String>();
public boolean validate(){//2.定义变量,来判断数据是否满足规范,如果满足 就返回true,不满足就返回falseboolean flag = true;if(name == null || name.trim().equals("")){errors.put("name","请输入用户名");flag = false;return flag;}if(password == null || password.trim().equals("")){errors.put("password","请输入密码");flag = false;return flag;}else if(password.length()>12 || password.length()<6){errors.put("password","请输入6-12个字符");flag = false;return flag;}if(password != null && !password.equals(password2)){errors.put("password2","两次输入密码不一致");flag = false;return flag;}//校验邮箱,校验邮箱格式是否满足规范String regex = "[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+";if(email == null || email.trim().equals("")){errors.put("email","请输入邮箱");flag = false;return flag;}else if(!email.matches(regex)){errors.put("email","邮箱格式错误");flag = false;return flag;}return flag;
}
//获取错误信息的方法
public Map<String, String> getErrors() {return errors;
}
//提供向map集合中添加错误信息
public void setErrorMsg(String err,String errMsg){if((err != null) && (errMsg!=null)){errors.put(err, errMsg);}}}

2.创建工具类
在chaterp11项目的src下创建cn.itcast.chaterp11.model2.util,在包中定义DBUtil类,

package cn.itcast.chapter11.model2.util;
import java.util.HashMap;

import cn.itcast.chapter11.model2.domain.UserBean;

public class DBUtil {
private static DBUtil instance = new DBUtil();
public static DBUtil getInstance(){
return instance;
}
private HashMap<String, UserBean> users = new HashMap<String, UserBean>();
public DBUtil(){
UserBean user1 = new UserBean();
user1.setName(“Jack”);
user1.setPassword(“123456”);
user1.setEmail(“jack@it315.org”);
users.put(“Jack”,user1);
UserBean user2 = new UserBean();
user2.setName(“Rose”);
user2.setPassword(“abcdefr”);
user2.setEmail(“rose@it315.org”);
users.put(“Rose”,user2);
}
public UserBean getUser(String username){
UserBean user = users.get(username);
return user;
}
public boolean insertUser(UserBean user){
if(user == null){
return false;
}
String username = user.getName();
//String usernameDB = users.get(username).getName();
UserBean userDB = users.get(username);
if(userDB !=null){
return false;
}
users.put(username,user);
return true;
}
}

3.创建Servlet
在chaterp11项目的src下创建cn.itcast.chaterp11.model2.web,在包中定义ConrtrollerServlet类,

package cn.itcast.chapter11.model.web;

import java.io.IOException;
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 cn.itcast.chapter11.model2.domain.RegisterFormBean;
import cn.itcast.chapter11.model2.domain.UserBean;
import cn.itcast.chapter11.model2.util.DBUtil;

/**

  • Servlet implementation class ControllerServlet
    */
    @WebServlet("/ControllerServlet")
    public class ControllerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      //����
      request.setCharacterEncoding(“utf-8”);
      //����
      response.setContentType(“text/html;charset=utf-8”);
      //
      String name=request.getParameter(“name”);
      String password= request.getParameter(“password”);
      String password2=request.getParameter(“password2”);
      String email= request.getParameter(“email”);

      RegisterFormBean fromBean= new RegisterFormBean();
      fromBean.setName(name);
      fromBean.setPassword(password);
      fromBean.setPassword2(password2);
      fromBean.setEmail(email);
      if(!fromBean.validate()) {
      request.setAttribute(“fromBean”, fromBean);
      request.getRequestDispatcher("/register.jsp").forward(request,response);
      return;
      }
      UserBean userBean= new UserBean();

      userBean.setName(name);
      userBean.setPassword(password);
      userBean.setEmail(email);

      boolean b = DBUtil.getInstance().insertUser(userBean);

      if(!b) {
      request.setAttribute(“DBMes”,“你注册的用户存在”);
      request.setAttribute(“fromBean”, fromBean);
      request.getRequestDispatcher("/register.jsp").forward(request,response);
      }
      response.getWriter().print(“恭喜你注册成功,3秒钟自动跳转”);
      request.getSession().setAttribute(“userBean”, userBean);
      response.setHeader(“refresh”, “3,url=loginSuccess.jsp”);
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}

4.创建JSP页面
1.在项目WebContent目录下创建register.jsp文件,该文件是用户注册的表单页面,用于接收用户的注册信息。
<%@ page language=“java” pageEncoding=“UTF-8”%>

用户注册

用户注册

姓名:
${formBean.errors.name}${DBMes}

密码:
${formBean.errors.password}

确认密码:
${formBean.errors.password2}

邮箱:
${formBean.errors.email}

2.在项目WebContent目录下创建loginSuccess.jsp文件,该文件是用户登入成功的页面。
<%@ page language=“java” pageEncoding=“UTF-8” import=“cn.itcast.chapter11.model2.domain.UserBean”%>

login successfully

    <div id="main"><div id="welcome">恭喜你,登录成功</div><hr /><div>您的信息</div><div><ul><li>您的姓名:${userBean.name}</li><li>您的邮箱:${userBean.email}</li></ul></div></div>

jsp 开发模型 day相关推荐

  1. JSP开发模型与MVC设计模型

    JSP开发模型与MVC设计模型 一.概述 ​ JSP的开发模型即JSP Model,在web开发中,为了更方便地使用JSP技术,SUN公司为JSP技术提供了两种开发模型:JSP Model1和JSP ...

  2. JavaBean 技术与 JSP 开发模型练习题

    <JavaBean 技术与 JSP 开发模型练习题> 文章目录 单选题 多选题 判断题 填空题 JavaBean 技术与 JSP 开发模型 单选题 1. JSP Model2模型就是MVC ...

  3. 第11章JSP开发模型

    第11章JSP开发模型 一.填空题 1.MVC模式将软件程序分为3个核心模块:模型(Model).视图(View)和[ 控制器(Controller) ]. 2.在JSP Model 2架构模型有效地 ...

  4. ***第11章 JSP开发模型

    ***第11章 JSP开发模型 习题 一.填空题 1.为了更方便地使用JSP技术,Sun公司为JSP技术提供了两种开发模型:[ JSP Model1 ]和[ JSP Model2 ]. 2.JSP M ...

  5. 【JSP教科书】JSP知识在线指南(记录知识JSP体系、EL表达式、JSTL标签库、JSP开发模型和分页查询)

    文章目录 @[toc] 一.JSP简介 1.1 什么是JSP? 1.2 JSP的特点 1.3 JSP为什么也是Servlet 1.4 tomact服务器中的资源分析 1.4.1 tomact服务器中的 ...

  6. 11-JSP开发模型

    一.JSP开发模型 JSP的开发模型即JSP Model,在Web开发中,为了更方便地使用JSP技术,Sun公司为JSP技术提供了两种开发模型:JSP Model1和JSP Model2.JSP Mo ...

  7. 【HM】第11课:JSTL标签+JSP开发模式

    <pre> day11 昨天内容回顾 (1)jsp *jsp的三个指令 *jsp里面九个内置对象 request response session config application e ...

  8. java开发模型_java开发模型MVC

    常见的三种开发模型: 1. Model1:JSP+JavaBean 2. Model2:MVC 3.Model2+三层架构 今天就重点学习一下Model2+三层架构的编程思想.三层架构主要包括:表现层 ...

  9. Servlet+jsp开发图书管理系统流程。

    本人在学习Servlet+JSP时候,是直接看的一个40课时的实战项目.根据项目学习写这种项目时候的套路. 学习了包括如何分层,数据结构的使用,文件,接口的整理,还有servlet+jsp的基础知识等 ...

最新文章

  1. Android 5.0中的FDE功能实现
  2. POJ 2229 Sumsets
  3. C++ 写时拷贝 3
  4. python爬虫程序自动结束-在linux下python爬虫进程发生异常时自动重启直至正常结束的方法...
  5. 执行了rm-f,除了跑路,如何恢复?
  6. java中dynamic_java中dynamic web project与web project 的区别 [转]
  7. android车机系统刷机_让我们盘点一下在整个车联网领域,有哪几类玩家?
  8. java求最大值时i的值_java 输入一组数组,求最大值。
  9. python是什么语言-python底层是什么语言
  10. OpenDocument Format ODF
  11. 石头扫地机器人加速异响_AI助力,无惧障碍 石头扫地机器人T7Pro测评
  12. 数据处理SPSS的数据类型分析
  13. 推荐系统笔记(二):常用数据集Movielens学习
  14. 安装kubernetes k8s v1.16.0 国内环境
  15. 电脑能上qq等软件但是浏览器打不开网页
  16. docker启动镜像命令
  17. python处理skl参数、ubuntu下翻译选中文字
  18. 酷睿i9 12950HX怎么样 相当于什么水平
  19. 如何处罚被客户投诉的项目经理?
  20. Bert 得到中文词向量

热门文章

  1. 10行代码爬取英雄联盟皮肤全套。6不6?
  2. 电容笔有什么用?值得推荐的ipad电容笔
  3. 《Xilinx - UG471中文翻译》(3)OSERDESE2原语介绍
  4. DevExpress报表的数据绑定及打印
  5. 弘辽科技:淘宝店铺转让后是否可以修改类目?相关问题汇总
  6. 面试成功后如何谈薪资?
  7. MMORPG设计方案(第一版)
  8. Python教程分享,10款超好用的Python开发工具!
  9. 毕业设计-怎么样快速完成大学四年的计算机设计系统加论文呢?
  10. 【周总结】-2019年7月第一周