专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

web开发者模式_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 17:23:41       共计:3561 浏览

web开发者模式?

web开发模式

Model1

显示层,控制层,数据层,统一交给jsp或者javabean处理.

处理流程

客户端发送request 到 jsp jsp 执行javabean javabean读取databases

返回 databases 返回给javabean 在返回给jsp 在response 给客户端

即 jsp + dao 方式

model - view - controller

客户端发送request 到servlet 然后servlet 执行javabean javabean用于读取databases 控制器,获取到javabean读取的数据以后,再次返回给jsp,jso生成html文件,response 给客户端

分为 显示层 控制层 模型层

EJB 属于SUN提供的分布式

代码如下

创建数据库

no 列名称 描述

1 userid 保存用户的登录id

2 name 用户真实姓名

3 password 用户密码

目录结构如下

jdbc层

package com.ming.dbc;

import java.sql.Connection;

import java.sql.DriverManager;

public class DatabaseConnection {

private static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";

private static final String DBURL = "jdbc:mysql://47.94.95.84:32786/test";

private static final String DBUSER = "test";

private static final String DBPASSWORD = "ABCcba20170607";

private Connection connection = null;

// 连接数据库

public DatabaseConnection() throws Exception{

try{

Class.forName(DBDRIVER);

connection = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);

}catch (Exception e){

throw e;

}

}

// 获得数据库连接

public Connection getConnection(){

return this.connection;

}

// 数据库关闭

public void close() throws Exception{

if(this.connection != null){

try{

this.connection.close();

}catch (Exception e){

throw e;

}

}

}

}

dao层

定义接口

package com.ming.dao;

import com.ming.vo.User;

public interface IUserDAO {

/**

* 用户登录验证

* @param user 传入VO对象

* @return 验证操作结果

* @throws Exception 抛出错误

*/

public boolean findLogin(User user) throws Exception;

}

实现类

package com.ming.dao;

import com.ming.vo.User;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

public class UserDAOImpl implements IUserDAO {

// 数据库连接对象

private Connection connection = null;

// 操作对象

private PreparedStatement preparedStatement = null;

// 数据库连接

public UserDAOImpl(Connection _connection){

this.connection = _connection;

}

/**

* 用户登录验证

*

* @param user 传入VO对象

* @return 验证操作结果

* @throws Exception 抛出错误

*/

@Override

public boolean findLogin(User user) throws Exception {

boolean flag = false;

try{

String sql = "SELECT name FROM user WHERE userid = ? AND password = ?";

// 获得实例化对象

this.preparedStatement = this.connection.prepareStatement(sql);

// 设置id

this.preparedStatement.setString(1, user.getUserid());

this.preparedStatement.setString(2, user.getPassword());

ResultSet resultset = this.preparedStatement.executeQuery();

if(resultset.next()){

user.setName(resultset.getString(1));

flag = true;

}

}catch (Exception e){

throw e;

}finally {

if(this.preparedStatement != null){

try{

this.preparedStatement.close();

}catch (Exception e){

throw e;

}

}

}

return flag;

}

}

代理类

package com.ming.dao;

import com.ming.dbc.DatabaseConnection;

import com.ming.vo.User;

public class UserDAOProxy implements IUserDAO {

private DatabaseConnection databaseConnection = null;

private IUserDAO dao = null;

public UserDAOProxy(){

try{

this.databaseConnection = new DatabaseConnection();

}catch (Exception e){

e.printStackTrace();

}

this.dao = new UserDAOImpl(this.databaseConnection.getConnection());

}

/**

* 用户登录验证

*

* @param user 传入VO对象

* @return 验证操作结果

* @throws Exception 抛出错误

*/

@Override

public boolean findLogin(User user) throws Exception {

boolean flag = false;

try{

flag = this.dao.findLogin(user);

}catch (Exception e){

throw e;

}finally {

this.databaseConnection.close();

}

return flag;

}

}

定义代理工厂

package com.ming.factory;

import com.ming.dao.IUserDAO;

import com.ming.dao.UserDAOProxy;

public class DAOFactory {

public static IUserDAO getIuserDAOInstance(){

return new UserDAOProxy();

}

}

实体关系映射

package com.ming.vo;

// 对user表进行映射

public class User {

private String userid;

private String name;

private String password;

public String getUserid() {

return userid;

}

public String getName() {

return name;

}

public String getPassword() {

return password;

}

public void setUserid(String userid) {

this.userid = userid;

}

public void setName(String name) {

this.name = name;

}

public void setPassword(String password) {

this.password = password;

}

}

视图层

<%@ page import="java.util.List" %>

<%@ page import="java.util.iterator" %><%--

Created by IntelliJ IDEA.

User: ming

Date: 19-3-16

Time: 下午11:07

To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<title>Title</title>

</head>

<body>

<h2>用户登录程序</h2>

<%

List<String> info = (List<String>)request.getAttribute("info");

if(info != null){

Iterator<String> iterator = info.iterator();

while(iterator.hasNext()){

%>

<h4><%=iterator.next()%></h4>

<%

}

}

%>

<form action="loginServlet" method="post">

用户id <input type="text" name="userid" id="uname"/>

密码 <input type="password" name="userpass" id="password"/>

<input type="submit" value="登录" id="submit"/>

<input type="reset" value="重置"/>

</form>

<script>

let submit = document.getElementById("submit");

submit.onclick = (event) => {

let uname = document.getElementById("uname").value;

let password = document.getElementById("password").value;

if(!(/^\w{5,15}/.test(uname))){

alert("用户id为5-15位");

return false;

}

if(!(/^\w{5,15}/.test(password))){

alert("密码必须为5-15位");

return false;

}

return true;

}

</script>

</body>

</html>

配置文件

<!DOCTYPE web-app PUBLIC

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>

<display-name>Archetype Created Web Application</display-name>

<servlet>

<servlet-name>login</servlet-name>

<servlet-class>com.ming.servlrt.LoginServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>login</servlet-name>

<url-pattern>/loginServlet</url-pattern>

</servlet-mapping>

</web-app>

mvc运行流程

表单提交到servlet,servlet调用dao进行表单验证,然后dao连接数据库进行验证,验证结果返回给业务层,即servlet,在业务层servlet中获取info等日志信息,然后服务器端跳转到运行结果页面即view层.

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:insert插入怎么跳过已有的_数据库 | ·下一条:mysql 查询比较,mysql查询每个人每个月数据的平均值_数据库

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有