架构实例之SpringTest

架构实例之SpringTest

1、开发工具和开发环境

      开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13

开发环境:WIN7

2、SpringTest实现功能

用户登录、用户注册、退出登录。

3、SpringTest使用技术

      本实例使用了JSP、Spring3.1框架、JdbcTemplate来实现用户登录、用户注册和退出登录功能。系统架构图如图一所示:

 

图一:SpringTest系统架构图

4、具体实现

(1)在MyEclipse中新建一个Web项目,并命名为SpringTest。项目建立完成后,鼠标选择该项目并点击右键选择MyEclipse选项,再选择Add Spring Capabilities选项,再选择Spring3.1Core Libraries,最后点击finish按钮即可初步完成Spring框架环境搭建;

(2)在src中会自动生成一个appllicaitonContext.xml文件,此处把该文件放到WebRoot/WEB-INF目录下,并把该文件重新命名为spring-servlet.xml;

(3)在WebRoot/WEB-INF/lib下放入以下三个jar包spring.jar、mysql-connector-java-5.0.8-bin.jar、commons-dbcp.jar,此处即可完成本项目的所有玩家搭建,接下来就是具体代码的书写;

(4)首先,完成web.xml中的相关配置,具体代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>    

  <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping> 

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app

(5)接下来,就是spring-servlet.xml中的相关配置,具体代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

   <!--  配置数据源与事务 -->
    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/demo_test</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>root</value>
        </property>
    </bean>
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource">
            <ref local="dataSource" />
        </property>
    </bean>

    <!-- 定义DAO -->
    <bean id="userDAO" class="com.liu.spring.dao.UserDAO">
        <property name="dataSource">
            <ref local="dataSource" />
        </property>
    </bean>
    <bean id="UserDAOProxy"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <property name="target">
            <ref local="userDAO" />
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="insert*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>

      <!-- 定义视图 -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass">
            <value>
                org.springframework.web.servlet.view.InternalResourceView
            </value>
        </property>
        <!-- JSP都放在/目录下 -->
        <property name="prefix">
            <value>/</value>
        </property>
        <!-- JSP页面的后缀都四.JSP -->
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

    <!-- 定义映射 -->
    <bean id="loginMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/login.do">loginAction</prop>
            </props>
        </property>
    </bean>
    <bean id="logoutMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/logout.do">logoutAction</prop>
            </props>
        </property>
    </bean>
    <bean id="registerMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/register.do">registerAction</prop>
            </props>
        </property>
    </bean>

    <!---定义Action-->
    <bean id="loginAction"
        class="com.liu.spring.actions.LoginAction">
        <property name="commandClass">
            <value>com.liu.spring.forms.LoginForm</value>
        </property>
        <!-- 指定DAO类 -->
        <property name="userDAO">
            <ref local="userDAO" />
        </property>
        <!-- 指定失败要返回的页面 -->
        <property name="formView">
            <value>login</value>
        </property>
        <!-- 指定成功要返回的页面 -->
        <property name="successView">
            <value>welcome</value>
        </property>
    </bean>
    <bean id="logoutAction"
        class="com.liu.spring.actions.LogoutAction">
        <property name="commandClass">
            <value>com.liu.spring.forms.LoginForm</value>
        </property>
        <property name="successView">
            <value>login</value>
        </property>
    </bean>
    <bean id="registerAction"
        class="com.liu.spring.actions.RegisterAction">
        <property name="commandClass">
            <value>com.liu.spring.forms.RegisterForm</value>
        </property>
        <!-- 指定DAO类 -->
        <property name="userDAO">
            <ref local="userDAO" />
        </property>
        <!-- 指定失败要返回的页面 -->
        <property name="formView">
            <value>register</value>
        </property>
        <property name="successView">
            <value>login</value>
        </property>
    </bean>

</beans>

(6)用户登录、注册表单类具体代码:

用户登录表单类代码如下:

package com.liu.spring.forms;

public class LoginForm {
    private String username;

    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

}

用户注册表单类代码如下:

package com.liu.spring.forms;

public class RegisterForm {
    private String username;

    private String password1;

    private String password2;

    private String email;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword1() {
        return password1;
    }

    public void setPassword1(String password1) {
        this.password1 = password1;
    }

    public String getPassword2() {
        return password2;
    }

    public void setPassword2(String password2) {
        this.password2 = password2;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

(7)用户登录、注册、退出Action类具体代码:

用户登录Action类代码

package com.liu.spring.actions;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.liu.spring.dao.UserDAO;
import com.liu.spring.forms.LoginForm;
import com.liu.spring.util.Constants;

public class LoginAction extends SimpleFormController {
    UserDAO userDAO;    

    public UserDAO getUserDAO() {
        return userDAO;
    }

    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    protected ModelAndView onSubmit(HttpServletRequest request,
            HttpServletResponse response, Object command, BindException errors)
            throws Exception {
        LoginForm loginForm = (LoginForm) command;
        if (isValid(loginForm)) {
            request.getSession().setAttribute(Constants.USERNAME_KEY, loginForm.getUsername());
            return new ModelAndView(getSuccessView());
        } else {
            @SuppressWarnings("unchecked")
            Map<String, Object> modle = errors.getModel();
            modle.put("loginForm", loginForm);
            return new ModelAndView(getFormView(), modle);
        }
    }

    public boolean isValid(LoginForm loginForm) {
//        if (loginForm.getUsername().equals("admin")
//                && loginForm.getPassword().equals("admin")) {
//            return true;
//        } else {
//            return false;
//        }

        if(userDAO.isValid(loginForm.getUsername(), loginForm.getPassword())) {
            return true;
        } else {
            return false;
        }
    }
}

其中,用户登录中使用了一个USERNAME_KEY字段,此处单独建立一个Constants类来实现,具体代码如下:

package com.liu.spring.util;

public class Constants {
    public final static String USERNAME_KEY = "username";

}

用户注册Action类代码

package com.liu.spring.actions;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.liu.spring.dao.User;
import com.liu.spring.dao.UserDAO;
import com.liu.spring.forms.RegisterForm;

public class RegisterAction extends SimpleFormController {

    UserDAO userDAO;

    public UserDAO getUserDAO() {
        return userDAO;
    }

    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    public ModelAndView onSubmit(HttpServletRequest request,
            HttpServletResponse response, Object command, BindException errors)
            throws Exception {
        String method = request.getParameter("method");
        if (method == null || method.equals("init")) {
            return init(command, errors);
        } else if (method.equals("register")) {
            return register(request, response, command, errors);
        } else {
            RegisterForm registerForm = (RegisterForm) command;
            @SuppressWarnings("unchecked")
            Map<String, Object> modle = errors.getModel();
            modle.put(getFormSessionAttributeName(), registerForm);
            return new ModelAndView(getSuccessView(), modle);
        }
    }

    public ModelAndView init(Object command, BindException errors)
            throws Exception {
        RegisterForm registerForm = (RegisterForm) command;
        @SuppressWarnings("unchecked")
        Map<String, Object> modle = errors.getModel();
        modle.put(getFormSessionAttributeName(), registerForm);
        return new ModelAndView(getFormView(), modle);
    }

    public ModelAndView register(HttpServletRequest request,
            HttpServletResponse response, Object command, BindException errors)
            throws Exception {
        RegisterForm registerForm = (RegisterForm) command;
        if (!isExist(registerForm)) {
            add(registerForm);
            @SuppressWarnings("unchecked")
            Map<String, Object> modle = errors.getModel();
            modle.put(getSuccessView(), registerForm);
            response.sendRedirect("login.do");
            return null;
            //return new ModelAndView(getSuccessView(), modle);
        } else {
            @SuppressWarnings("unchecked")
            Map<String, Object> modle = errors.getModel();
            modle.put(getFormSessionAttributeName(), registerForm);
            return new ModelAndView(getFormView(), modle);
        }
    }

    public boolean isExist(RegisterForm registerForm) {
//        if (registerForm.getUsername().equals("admin")) {
//         return true;
//         } else {
//         return false;
//         }
        if (userDAO.isExist(registerForm.getUsername())) {
            return true;
        } else {
            return false;
        }
    }

    public void add(RegisterForm registerForm) {
        User user = new User();
        user.setUsername(registerForm.getUsername());
        user.setPassword(registerForm.getPassword1());
        user.setEmail(registerForm.getEmail());
        userDAO.insertUser(user);
    }
}

用户退出Action类代码

package com.liu.spring.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class LogoutAction extends SimpleFormController {

    protected ModelAndView onSubmit(HttpServletRequest request,
            HttpServletResponse response, Object command, BindException errors)
            throws Exception {
        request.getSession().invalidate();
        response.sendRedirect("login.do");
        return null;
        //return new ModelAndView(getSuccessView());
    }
}

(8)用户登录和注册进行数据库验证类代码

使用JDBCTemplate完成POJO类User类的创建,具体代码如下:

package com.liu.spring.dao;

public class User {
protected String id;

    protected String username;

    protected String password;

    protected String email;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

}

使用JDBCTemplate完成数据操作类UserDAO类的创建,具体代码如下:

package com.liu.spring.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

public class UserDAO {
    private DataSource dataSource;

    public DataSource getDataSource() {
        return dataSource;
    }

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public boolean isValid(String username, String password) {
        @SuppressWarnings("rawtypes")
        List userList = new ArrayList();
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        userList = jdbcTemplate.query("SELECT * FROM userInfo WHERE username=‘"
                + username + "‘ and password=‘" + password + "‘",
                new RowMapper() {
                    public Object mapRow(ResultSet rs, int rowNum)
                            throws SQLException {
                        User user = new User();
                        user.setId(rs.getString("ID"));
                        user.setUsername(rs.getString("username"));
                        user.setPassword(rs.getString("password"));
                        user.setEmail(rs.getString("email"));
                        return user;
                    }
                });
        if (userList.size() > 0) {
            return true;
        } else {
            return false;
        }
    }

    public boolean isExist(String username) {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        int count = jdbcTemplate.queryForInt("SELECT count(*) FROM userInfo WHERE username=‘" + username
                + "‘");
        if (count > 0) {
            return true;
        } else {
            return false;
        }
    }

    public void insertUser(User user) {
        String username = user.getUsername();
        String password = user.getPassword();
        String email = user.getEmail();
        JdbcTemplate jt = new JdbcTemplate(getDataSource());
        jt.update("insert into userInfo(username,password,email) values (‘"
                + username + "‘,‘" + password + "‘,‘" + email + "‘);");
    }
}

(9)视图层用户登录,用户注册和登录成功后JSP界面代码

用户登录JSP页面代码(login.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘login.jsp‘ starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    <form name="form1" action="login.do" method="post">
<table width="200" border="1">
    <tr>
        <td colspan="2">登录窗口</td>
    </tr>
    <tr>
        <td>用户名</td>
        <td><input type="text" name="username" size="10"></td>
    </tr>
    <tr>
        <td>密码</td>
        <td><input type="password" name="password" size="10"></td>
    </tr>
    <tr>
        <td colspan="2"><input type="submit" name="submit" value="登录"> <a
            href="register.do?method=init">注册新用户</a></td>
    </tr>
</table>
</form>

  </body>
</html>

用户注册JSP页面代码(register.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%String path = request.getContextPath();
            String basePath = request.getScheme() + "://"
                    + request.getServerName() + ":" + request.getServerPort()
                    + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP ‘register.jsp‘ starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
</head>

<body>
<form name="form1" action="register.do?method=register" method="post">
<table width="200" border="1">
    <tr>
        <td colspan="2">注册窗口</td>
    </tr>
    <tr>
        <td>用户名</td>
        <td><input type="text" name="username" size="10"></td>
    </tr>
    <tr>
        <td>密码</td>
        <td><input type="password" name="password1" size="10"></td>
    </tr>
    <tr>
        <td>确认密码</td>
        <td><input type="password" name="password2" size="10"></td>
    </tr>
    <tr>
        <td>Email</td>
        <td><input type="text" name="email" size="10"></td>
    </tr>
    <tr>
        <td colspan="2"><input type="submit" name="submit" value="登录"> <a
            href="login.do">返回</a></td>
    </tr>
</table>
</form>

</body>
</html>

登录成功后JSP页面代码(welcome.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘welcome.jsp‘ starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    <form name="form1" action="logout.do" method="post">
        <table width="200" border="1">
            <tr>
                <td colspan="2">登录成功</td>
            </tr>
            <tr>
                <td>欢迎你,</td>
                <td><%=(String) session.getAttribute("username")%></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" name="submit" value="退出"></td>
            </tr>
        </table>
        </form>
  </body>
</html>

5、运行结果

开启Tomcat服务后,打开浏览器输入:http://localhost:8080/SpringTest/login.jsp,将会出现下图二所示结果:

图二:用户登录界面

点击注册新用户,将会出现以下图三所示结果(点击登陆,如果注册成功就会返回到登陆界面,如果未成功则保留在注册界面):

图三:用户注册界面

用上图中注册的账号进行登陆,登陆成功后出现下图四所示结果:

图四:用户登陆成功后界面

PS:本项目具体源码GitHub链接:https://github.com/miaomiaoqiushui/SpringTest

时间: 2024-08-30 10:59:14

架构实例之SpringTest的相关文章

【DDD】领域驱动设计实践 —— 架构风格及架构实例

概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场景和需求来制定. 核心的指导思路归纳为: 关注点放在domain上,将业务领域限定在同一上下文中 降低上下文之间的依赖,通过‘开发主机服务’(REST服务是其中的一种).‘消息模式’.‘事件驱动’等架构风格实现 遵循分层架构模式 架构风格 针对DDD的架构设计,<实现领域驱动设计>提到了几种架构风

三层架构实例

三层架构实例 一.新建立一个三层架构体系结构解决方案 原文://http://blog.csdn.net/xjc1278003262/article/details/8867177 新建一个空白解决方案.然后: 1.“添加”-“新建项目”-“Visual C#”-“类库”-“称:LoginBLL”-“业务逻辑”(业务层,下简称B层)如下图: 2.“添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginDAL”-“数据访问”(数据层,下简称D层)如下图: 3.“添加”-“新建项

架构实例之Demo_JSP_JavaBean_Servlet

架构实例之Demo_JSP_JavaBean_Servlet 1.开发工具和开发环境       开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:WIN10 2.Demo_JSP_JavaBean_Servlet实现功能 用户登录.用户注册.退出登录. 3.Demo_JSP_Java_Bean_Servlet使用技术       本实例使用了JSP.JavaBean.Servlet和JDBC来实现用户登录.用户

架构实例之Demo_JSP_JavaBean

架构实例之Demo_JSP_JavaBean 1.开发工具和开发环境      开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:WIN10 2.Demo_JSP_JavaBean实现功能      用户登录.用户注册.退出登录. 3.Demo_JSP_Java_Bean使用技术      本实例使用了JSP.JavaBean和JDBC来实现用户登录.用户注册和退出登录功能.系统架构图如图一所示: 图一:Demo

架构实例之Demo_JSP

架构实例之Demo_JSP 1.开发工具和开发环境       开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:WIN10 2.Demo_JSP实现功能      用户登录.用户注册.退出登录. 3.Demo_JSP使用技术     本实例使用了JSP.JDBC来实现用户登录.用户注册和退出登录功能.系统架构图如图一所示: 图一:Demo_JSP系统架构图 下面请看图二(Demo_JSP中JSP文件间逻辑关系图

C# 最简单的三层架构实例 ——转载自网易博客

代码        /// <summary>        /// 初始化登录名称.登录密码(Model类)        /// </summary>        private string adminUser = string.Empty; //设置用户名称为空值        private string adminPwd = string.Empty; //设置用户密码为空值        public string AdminUser        {       

vb.Net三层架构实例——登录

封装给编程带来的巨大的好处我们已感受到了,面向对象编程思想已经深入人心. 有了面向对象思想做指导,软件得到了迅速 的发展.在这种发展趋势下,三层架构也随之出现了. 从物理结构上来说,三层可以是客户端.应用服务器.数据库服务器.从逻辑上来说是表现层(Presentation layer).业务逻 辑层(Business Logic Layer).数据访问层(Dataaccess layer).区分层次体现了"高内聚低耦合"的思想.在软件体系架构设 中,分层式结构是最常见,也是最重要的一种

C#三层架构实例

对于三层的概念查也查了,看也看了,下面是我找的一个关于三层的简单实例,真正看一下它是如何具体实现的. 我们先来一起看看实体类-Model 实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张表,一个属性是一个字段! using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace model { public class User { public User()

JAVA学习笔记(五十三)- 经典三层架构实例

UserDAO接口 /* * UserDAO接口 */ public interface UserDAO { //插入用户 public void insert(User user); //删除用户 public void delete(int id); //更新用户 public void update(User user); //查询所有用户 public List<User> getAllUsers(); //根据用户名或密码查询用户 public boolean checkUser(U