model1开发模式

  • 工作流程:

①浏览器请求,JSP页面接收

②JSP根据请求和JavaBean进行交互

③JavaBean进行业务处理,JDBC操纵数据库

④JSP将请求结果返回浏览器页面

  • 利用model1,设计一个简单的登陆页面

  新建Java web项目,项目结构如下:

  建立基于Mysql的JDBC类

 package com.ddpapa.test.jdbc;

 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;

 public class MysqlDBConn {
     private Statement stmt;
     private Connection conn;
     ResultSet rs;
     public MysqlDBConn(){
         stmt = null;
         try {
             /*加载数据库驱动获取数据库连接*/
             Class.forName("com.mysql.jdbc.Driver");
             conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/datatest","root","123456");
         } catch (Exception e) {
             // TODO: handle exception
             e.printStackTrace();
         }
         rs = null;
     }
     public Connection getConn() {
         return this.conn;
     }
     public ResultSet executeQuery(String sql){
         /*取得结果集*/
         try {
             stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
             rs = stmt.executeQuery(sql);
         } catch (Exception e) {
             // TODO: handle exception
             System.err.println("Data.executeQuery: " + e.getMessage());
         }
         return rs;
     }
     public void closeStmt()
     {
         /*关闭Stmt*/
         try
         {
             stmt.close();
         }catch(SQLException e){
             System.err.println("Data.executeQuery: " + e.getMessage());
         }
     }
     public void closeConn()
     {
         /*关闭数据库连接*/
         try
         {
             conn.close();
         }catch(SQLException e){
             System.err.println("Data.executeQuery: " + e.getMessage());
         }
     }

 }

MysqlDBConn.java

  建立JavaBean

 package com.ddpapa.test.model.vo;

 public class UserTable {
     private Integer id;
     private String username;
     private String password;
     public Integer getId() {
         return id;
     }
     public void setId(Integer id) {
         this.id = id;
     }
     public String getUsername() {
         return username;
     }
     public void setUsername(String username) {
         this.username = username;
     }
     public String getPassword() {
         return password;
     }
     public void setPassword(String password) {
         this.password = password;
     }

 }

UserTable.java

  新建login.jsp

 <%@ page language="java" pageEncoding="gb2312" %>
 <html>
 <head>
     <title>登陆界面</title>
 </head>
 <body>
 <form action="validate.jsp" method="get">
     <table>
         <tr>
             <th colspan="2" align="center">登陆页面</th>
         </tr>
         <tr>
             <td>用户名:</td>
             <td><input type="text" name="username" size="20"></td>
         </tr>
         <tr>
             <td>密码:</td>
             <td><input type="password" name="password" size="20"></td>
         </tr>
     </table>
     <input type="submit" value="登陆">
     <input type="reset" value="重置">
 </form>
 </body>
 </html>

login.jsp

  新建validate.jsp

 <%@page language="java" pageEncoding="gb2312" import="java.sql.*,com.ddpapa.test.model.vo.UserTable"%>
 <jsp:useBean id="MysqlDB" scope="page" class="com.ddpapa.test.jdbc.MysqlDBConn"></jsp:useBean>
 <html>
 <head>
     <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
 </head>
 <body>
     <%
         request.setCharacterEncoding("gb2312");
         String usr=request.getParameter("username");
         String pwd=request.getParameter("password");
         boolean validate = false;
         UserTable user = null;
         user = (UserTable)session.getAttribute("user");
         if(user==null){
             String sql = "select * from userTable";
             ResultSet rs = MysqlDB.executeQuery(sql);    //取得结果集
             while(rs.next()){
                 if((rs.getString("username").trim().compareTo(usr)==0) && (rs.getString("password").compareTo(pwd)==0)){
                     user = new UserTable();
                     user.setId(rs.getInt(1));
                     user.setUsername(rs.getString(2));
                     user.setPassword(rs.getString(3));
                     validate = true;
                 }
             }
             rs.close();
             MysqlDB.closeStmt();
             MysqlDB.closeConn();
         }else{
             validate = true;
         }
         if(validate){
         %>
             <jsp:forward page="success.jsp"/>
         <%
         }else{
         %>
             <jsp:forward page="error.jsp"/>
         <%
         }
      %>
 </body>
 </html>

validate.jsp

  新建error.jsp

 <%@ page language="java" pageEncoding="gb2312" %>
 <html>
 <head>
     <title>登陆失败</title>
 </head>
 <body>
 抱歉!登陆失败
 </body>
 </html>

  新建success.jsp

 <%@ page language="java" pageEncoding="gb2312" import="com.ddpapa.test.model.vo.UserTable"%>
 <html>
 <head>
     <title>登陆成功</title>
 </head>
 <body>
     <%
         String usr = request.getParameter("username");
      %>
      <%=usr%>,您好!欢迎登陆。
 </body>
 </html>

  修改web.xml配置文件

 <?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
   <display-name>jsp_model1</display-name>
   <welcome-file-list>
     <welcome-file>login.jsp</welcome-file>
   </welcome-file-list>
 </web-app>
  • 错误集锦

  500错误——lib目录下缺少数据库连接jar包

  

  500错误——org.apache.jasper.JasperException:An exception occurred processing JSP page [/xxx.jsp] at line [x]

  success代码如下时出现错误:

  错误原因session对象getAttribute返回值为null(根本原因user不存在),导致空指针错误,改为request对象解决问题

JavaEE——JSP开发模式(model1)的更多相关文章

  1. jsp基础、el技术、jstl标签、javaEE的开发模式

    一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...

  2. 【JAVAWEB学习笔记】18_el&jstl&javaee的开发模式

    一.EL技术 1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据 ...

  3. 动态页面技术----EL技术、JSTL技术,javaEE的开发模式

    1 EL技术 1.1 EL 表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写, EL出现的目的是要替代jsp页面中脚本的编写,就是简化java代码. ...

  4. javaEE的开发模式

    1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model1的弊端:随着业务复杂性 ...

  5. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  6. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  7. 十五 JSP开发模式&MVC设计模式

    JSP开发模式: JavaBean + JSP  : 缺点:页面代码过多,不利于维护,JSP页面代码变得臃肿 Servlet + JavaBean + JSP :MVC设计模式 M:model   模 ...

  8. Tip: JSP开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. JSP+JavaBean模式适合开发业务 ...

  9. 浅析Java开发模式—Model1、Model2和三层

    "解耦"的思想一直是我们倡导的,但在实际项目中怎样去做?这是需要我们去好好思考的.下面以Model1.Model2.三层为切入点,对比下去了解解耦的思想. Model1 使用JSP ...

随机推荐

  1. 【Offer】[43] 【1~n整数中1出现的次数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数.例如,输入12, 1~12这些整数中包含1的数字有1.10.11和12,1 ...

  2. Mybatis系列(四)注解

    Mybatis系列(四)注解 1.pom.xlm: <?xml version="1.0" encoding="UTF-8"?> <proje ...

  3. wireshark抓包,分析出PNG后解析

    1. 抓包 2. 转成hex二进制流 3. 将二进制流转成base64位,通过在线工具: http://tomeko.net/online_tools/hex_to_base64.php?lang=e ...

  4. 用vetr.x写一个HTTP接口适配器, 对接各种形式接口

    用vetr.x写一个HTTP接口适配器, 对接各种形式接口 项目地址:https://github.com/hjx601496320/transmit 业务说明 在日常开发工作中,我们经常会遇到要和各 ...

  5. 表达式树练习实践:C#值类型、引用类型、泛型、集合、调用函数

    目录 表达式树练习实践:C#值类型.引用类型.泛型.集合.调用函数 一,定义变量 二,访问变量/类型的属性字段和方法 1. 访问属性 2. 调用函数 三,实例化引用类型 四,实例化泛型类型于调用 五, ...

  6. 18 (OC)* RunTime

    目录: 一.怎么理解OC是动态语言,Runtime又是什么?二.理解消息机制的基本原理三.与Runtime交互的三种方式四.分析Runtime中的数据结构五.深入理解Rutime消息发送原理六.多继承 ...

  7. Apache Hadoop集群安装(NameNode HA + YARN HA + SPARK + 机架感知)

    1.主机规划 序号 主机名 IP地址 角色 1 nn-1 192.168.9.21 NameNode.mr-jobhistory.zookeeper.JournalNode 2 nn-2 192.16 ...

  8. [Code] 烧脑之算法模型

    把博客的算法过一遍,我的天呐多得很,爱咋咋地! 未来可考虑下博弈算法. 基本的编程陷阱:[c++] 面试题之犄角旮旯 第壹章[有必要添加Python] 基本的算法思想:[Algorithm] 面试题之 ...

  9. 【Java】SpringBoot 中从application.yml中获取自定义常量

    由于这里我想通过java连接linux,connection连接需要host.port.username.password及其他路径等等.不想每次修改的时候都去改源文件,所以想写在applicatio ...

  10. Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...