zoukankan      html  css  js  c++  java
  • jsp三层架构

    学了.net了,它的三层架构很好用。现在学jsp,我们一样可以用三层架构来开发。下面详细介绍

    1.创建数据库

    drop table MyUser
    create table MyUser
    (
    id int identity(1,1) not null,
    name Varchar(50),
    psw Varchar(50),
    nickname Varchar(50),
    age int,
    email Varchar(50)
    )

    2.model层

    package model;
    public class MyUser {
     private int id;
     private String name;
     public int getId() {
      return id;
     }
     public void setId(int id) {
      this.id = id;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String getPsw() {
      return psw;
     }
     public void setPsw(String psw) {
      this.psw = psw;
     }
     public String getNickname() {
      return nickname;
     }
     public void setNickname(String nickname) {
      this.nickname = nickname;
     }
     public int getAge() {
      return age;
     }
     public void setAge(int age) {
      this.age = age;
     }
     public String getEmail() {
      return email;
     }
     public void setEmail(String email) {
      this.email = email;
     }
     private String psw;
     private String nickname;
     private int age;
     private String email;
    }

    3.连接数据库

    package util;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    public class DB {
     public static Connection createConn() {
      Connection conn = null;
      try {
       Class.forName("net.sourceforge.jtds.jdbc.Driver");
       conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/jsp", "sa", "123456");
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      } catch (SQLException e) {
       e.printStackTrace();
      }
      return conn;
     }
     
     public static PreparedStatement prepare(Connection conn, String sql) {
      PreparedStatement ps = null;
      try {
       ps = conn.prepareStatement(sql);
      } catch (SQLException e) {
       e.printStackTrace();
      }
      return ps;
     }
     
     public static void close(Connection conn) {
      
      try {
       conn.close();
       conn = null;
      } catch (SQLException e) {
       e.printStackTrace();
      }
     }
     public static void close(Statement stmt) {
      try {
       stmt.close();
       stmt = null;
      } catch (SQLException e) {
       e.printStackTrace();
      }
     }
     public static void close(ResultSet rs) {
      try {
       rs.close();
       rs = null;
      } catch (SQLException e) {
       e.printStackTrace();
      }
     }
    }

    4.Service层

    package service;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import util.DB;
    import model.MyUser;
    public class MyUserService {
     public static void add(MyUser user) {
      Connection conn = DB.createConn();
      String sql = "insert into MyUser values(?,?,?,?,?)";
      PreparedStatement ps = DB.prepare(conn, sql);
      try {
       ps.setString(1, user.getName());
       ps.setString(2, user.getPsw());
       ps.setString(3, user.getNickname());
       ps.setInt(4, user.getAge());
       ps.setString(5, user.getEmail());
       ps.executeUpdate();
      } catch (SQLException e) {
       e.printStackTrace();
      }
      DB.close(ps);
      DB.close(conn);
     }
     
     public static MyUser getByName(String name){
      Connection conn = DB.createConn();
      String sql = "select * from MyUser where name = ?";
      PreparedStatement ps =DB.prepare(conn, sql);
      MyUser user=null;
      try {
       ps.setString(1, name);
       ResultSet rs = ps.executeQuery();
      
       if(rs.next()) {
        user = new MyUser();
        user.setId(rs.getInt("id"));
        user.setName(rs.getString("name"));
        user.setPsw(rs.getString("psw"));
        user.setNickname(rs.getString("nickname"));
        user.setAge(rs.getInt("age"));
        user.setEmail(rs.getString("email"));
       }
      } catch (SQLException e) {
       e.printStackTrace();
      }
      DB.close(ps);
      DB.close(conn);
      return user;
     }
    }

    5.页面层调用service层的方法即可

    <%
    String name=request.getParameter("name");
    String psw=request.getParameter("psw");
    String nickname=request.getParameter("nickname");
    int age=Integer.valueOf(request.getParameter("age"));
    String email=request.getParameter("email");
    MyUser newUser=new MyUser();
    newUser.setName(name);
    newUser.setPsw(psw);
    newUser.setNickname(nickname);
    newUser.setAge(age);
    newUser.setEmail(email);
    MyUser user=MyUserService.getByName(name);
    if(user!=null){ %>
    <jsp:forward page="error.jsp"></jsp:forward>
    <%}
    else
    {
     MyUserService.add(newUser);
    %>
    <jsp:forward page="success.jsp"></jsp:forward>
    <% 
    }
    %>
     
    ....
    ....
    ....

    三层架构对于连接数据库非常有用……

    要么庸俗、要么孤独
  • 相关阅读:
    Angular14 Angular相关命令
    Angular14 Visual Studio Code作为Angular开发工具常用插件安装、json-server安装与使用、angular/cli安装失败问题、emmet安装
    Material使用03 MdCardModule模块、MdInputModule模块
    Material使用02 图标MdIconModule、矢量图作为图标使用及改进
    Material使用01 侧边栏MdSidenavModule、工具栏MdTollbarModule
    阿里巴巴Druid数据库连接池的使用
    利用generator自动生成model(实体)、dao(接口)、mapper(映射)
    c++拷贝函数详解(转)
    c++友元函数友元类
    c++中虚函数与纯虚函数的区别(转)
  • 原文地址:https://www.cnblogs.com/tonz/p/4559950.html
Copyright © 2011-2022 走看看