10步教你学会简单的MVC架构的java程序(适合新手)

基于MVC架构的简单javaweb登陆注册功能实现(jsp + servlet + jdbc + mysql)     由于是第一次写博客,可能书写表达的效果不太好,希望大家见谅。此次博客主要是针对暑期老师布置的简单用户管理系统作业而展开,通过连接数据库可以利用数据库中用户信息进行登陆,并且在登陆后可修改数据库中信息(即实现数据库中的增删改查)。     本次简单的用户管理系统主要分为三个部分:前端部分;后台部分;数据库部分。其中前端部分采用html+css编写,主要部分为用户登陆界面,用户注册界面和数据... 阅读详情
适合新手,大拿手下留情,谢谢!

第1步:安装Oracle数据库,安装过程不赘述了;

第2步:新建一个账号zwp_test

//创建临时表空间

create temporary tablespace zwp_test_temp  
 
tempfile 'F:\app\Administrator\oradata\zwp_test_temp.dbf' 
 
size 50m  
 
autoextend on  
 
next 50m maxsize 20480m  
 
extent management local;

//创建数据表空间
create tablespace zwp_test_data  
 
logging  
 
datafile 'F:\app\Administrator\oradata\zwp_test_data.dbf' 
 
size 50m  
 
autoextend on  
 
next 50m maxsize 20480m  
 
extent management local; 

//创建用户

create user zwp_test identified by zwp_test

default tablespace zwp_test_data

temporary tablespace zwp_test_temp;

//授予权限

grant connect,resource,dba to zwp_test;

第3步:新建一个users表

create table users 
( 
 userid   varchar2(8) not null primary key ,
 username varchar2(10) not null,
 password varchar2(20) default '' not null , 
 age      int default '' not null ,
 sex      varchar2(20) not null
 ) tablespace zwp_test_data;

第4步:插入数据

insert into users(userid,username,password,age,sex) values('001','zhouwp','123',25,'man');

第5步:搭建环境,我就不赘述了,可以百度、谷歌

功能说明:

做一个用户查询的功能

资源结构如下图:

第6步:显示界面JSP

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ page import="com.web.zwp.*"  %>
<%@ page import="java.util.*"  %>
<html>
  <head>
  <script type="text/javascript">
  	function checkAll(ifAll) {
		//alert(ifAll.checked);
		var selectFlags = document.getElementsByName("selectFlag");
		for(var i=0;i<selectFlags.length;i++){
		//selectFlag[i].checked=document.getElementById("ifAll").checked;
		selectFlags[i].checked=ifAll.checked;
		}
	}
  </script>
  </head>
  <body>
  <form action="ShowUsers">
  	<table width="95%" border="1" cellspacing="0" cellpadding="0" align="center">
  	<input type="text" name="userid" id="userid" value=""/>
  	<input type="submit" value="查询">
	<input name="btnAdd" type="button" class="button1" id="btnAdd" value="添加" onClick="addUser()">
	<input name="btnModify" class="button1" type="button" id="btnModify" value="修改" onClick="modifyUser()">
	<input name="btnDelete" class="button1" type="button" id="btnDelete" value="删除" onClick="deleteUser()">
  		<tr>
  			<td width="55" class="rd6">
				<input type="checkbox" name="ifAll" id="ifAll" onClick="checkAll(this)">
			</td>
  			<td>姓名</td>
  			<td>密码</td>
  			<td>年龄</td>
  			<td>性别</td>		
  		</tr>
  		<%
  			User user = new User();
  			List<User> userList=(List<User>)request.getAttribute("userList");
  			if(userList != null && userList.size() > 0){
	  			for(Iterator iter=userList.iterator();iter.hasNext();){
				user=(User)iter.next();
  			}
  		 %>
  		<tr>
  			<td width="55" class="rd6">
				<input type="checkbox" name="ifAll" id="ifAll" onClick="checkAll(this)">
			</td>
  			<td><%=user.getUserName()%></td>
  			<td><%=user.getPassWord()%></td>
  			<td><%=user.getAge()%></td>
  			<td><%=user.getSex()%></td>	
 		</tr>
  		<%
  			}
  		%>
  	</table>
  	
  </form>
  </body>
</html>

第7步:链接数据库

package com.web.db;

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

public class DB {
	
	private DB() {}
	
	/**
	 * 取得Connection
	 * @return
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:drp","zwp_test","zwp_test");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	} 
	
	public static void close(PreparedStatement pstmt) {
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void close(Connection conn) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void close(ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		DB.getConnection();
	}
}

第8步:创建User对象类

package com.web.zwp;

public class User {
	private String UserId;
	private String UserName;
	private String PassWord;
	private int    Age;
	private String Sex;
	
	public String getUserName() {
		return UserName;
	}
	public void setUserName(String userName) {
		UserName = userName;
	}
	public String getPassWord() {
		return PassWord;
	}
	public void setPassWord(String passWord) {
		PassWord = passWord;
	}
	public int getAge() {
		return Age;
	}
	public void setAge(int age) {
		Age = age;
	}
	public String getSex() {
		return Sex;
	}
	public void setSex(String sex) {
		Sex = sex;
	}
	public String getUserId() {
		return UserId;
	}
	public void setUserId(String userId) {
		UserId = userId;
	}
	
}

第9步:新建一个用户管理类UserManager,类中实现查询方法

package com.web.zwp;
import java.sql.*;

import com.web.db.DB;
import com.web.zwp.User;


public class UserManager {
		
	private static UserManager instance = new UserManager();
		
	UserManager() {}
	
	public static UserManager getInstance() {
		return instance;
	}
	/*
	 * 
	 * 查询所有
	 */
	public User findAllUser() {
		String sql = "select * from users";
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		User user = null;
		try {
			conn = DB.getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				user = new User();
				user.setUserId(rs.getString("userid"));
				user.setUserName(rs.getString("username"));
				user.setPassWord(rs.getString("password"));
				user.setAge(rs.getInt("age"));
				user.setSex(rs.getString("sex"));
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			DB.close(rs);
			DB.close(pstmt);
			DB.close(conn);
		} 
		return user;
	}
	
	/*
	 * 按照ID查询
	 */
	public User findAllUserById(String userId) {
		String sql = "select * from users where userid=?";
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		User user = null;
		try {
			conn = DB.getConnection();
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, userId);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				user = new User();
				user.setUserId(rs.getString("userid"));
				user.setUserName(rs.getString("username"));
				user.setPassWord(rs.getString("password"));
				user.setAge(rs.getInt("age"));
				user.setSex(rs.getString("sex"));
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			DB.close(rs);
			DB.close(pstmt);
			DB.close(conn);
		} 
		return user;
	}
	
	
}

第10步:通过HttpServet实现控制部分

package com.web.zwp;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

public class ShowUsers extends HttpServlet {
	/**
	 * 
	 */
	//private static final long serialVersionUID = 3434710866509057630L;

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String userid=request.getParameter("userid");
		if(userid==null || userid.trim().length()==0)
		{
			User user=UserManager.getInstance().findAllUser();
			List<User> userList = new ArrayList<User>();
			userList.add(user);
		
			request.setAttribute("userList", userList);
			request.getRequestDispatcher("/ShowUsers.jsp").forward(request, response);
		}
		else
		{
			User user=UserManager.getInstance().findAllUserById(userid);
			List<User> userList = new ArrayList<User>();
			userList.add(user);
		//从数据库中获取数据传给request对象中的userList属性,并转发到前台jsp
			request.setAttribute("userList", userList);
			request.getRequestDispatcher("/ShowUsers.jsp").forward(request, response);
		}

	}
	
	public void doGet (HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}
}


最终显示界面样式:










MVC分层架构:通俗易懂的Java实践指南 MVC是Model(模型)、View(视图)和Controller(控制器)的缩写,它是一种将软件应用分成三个互相关联但又相对独立的部分的设计模式。模型(Model):负责处理数据和业务逻辑视图(View):负责界面显示和用户交互控制器(Controller):负责协调模型和视图MVC架构是一种将软件应用分为模型、视图和控制器三个部分的设计模式,通过清晰的职责分离使代码更易于维护和扩展。 阅读详情

相关推荐

第10章 初识Spring MVC框架

本章主要对Spring MVC的基础知识进行了整体介绍。首先对Spring MVC框架进行了简单的介绍;然后讲解了一个Spring MVC入门程序的编写;最后通过入门程序对Spring MVC的工作原理进行了详细讲解。

小猪宝宝的博客 1769

SSH入门系列 2 :前后端数值传递

前后端数值传递主要分为两个方向,第一个方向是从前端传递数值到后端 ,第二个方向是从后端传递数值到前端。 我先说第一个方向,从前端传递数值到后端:jsp页面如下: <%@ page language="java" contentType="text/html; charset=UTF-...

chenzeze3762的博客 568

我的第一个MVC程序

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范;本资源为全部示例代码-以电影(movie)为例,下载即可运行,良心创作,不喜勿喷!

基本的Java的MVC入门案例

概念: MVC:Model View Controller:模型、视图、控制器。他是一种专门设计web程序的模式 高内聚、低耦合(高内聚:专人干专事;低耦合:让类与类之间的关系不能太紧密) 模型(Model):是应用程序中与处理应用程序数据逻辑的部分。存数据、处理数据 视图 (View):是应用程序中处理数据显示的部分。展示数据 控制器(Controller):是应用程序中处理用户交互的部分。接收数据或者跳转页面 在MVC设计模式基础之上进一步的提出了java web的三层架构的思想: 表示层

默主归沙的博客 6922

用MVC模式和jsp实现的具有一些简单功能的小项目。适合初学者理解MVC模式

用MVC模式和jsp实现的具有一些简单功能的小项目。适合初学者理解MVC模式,还是希望大家能在java这条路上学有所成

最基本的MVC结构

分享给每一位喜欢学习的人。

【Java开发中的MVC模式(初学者)】

利用html+java+mysql等技术手段,写一个demo,功能如下:根据准考号查找学生相关信息。 在查询页面中输入学生的考试号,及时查询到学生的姓名、班级、课程、成绩等信息。(该文主要讲述MVC模式,所以默认数据库只有一门课程一个成绩,利用第一范式构建数据库)...

LeeChance的专栏 3036

JAVA最简单的MVC架构DEMO

JAVA最简单的MVC架构DEMO,教学版

Java学习-MVC架构模式

这种银行转账的代码我们之前就写过,首先写一个前端页面,在数据库中创建一个表,然后使用Servlet连接数据库并进行核心业务处理,注意还要手动提交事务,最终完成转账,但我们也发现一个问题,本次转账代码中的Servlet基本上完成了所有任务,比如数据接收、核心业务处理、数据库表中数据的曾删改查、页面数据展示。创建名为Account的类,用它来封装对象,有的人会把这种专门封装数据的对象称之为bean对象,也有人称之为pojo对象,还有人称为domain对象,都一样,称呼不同而已。至此,这个小项目已经相当完美了!

weixin_46051964的博客 1158

带你一步步用MVC架构实现简单的用户管理系统

用户管理系统,实现简单的用户管理,有包括普通用户、管理员;功能包括添加用户,删除用户,查询用户信息,更改用户信息等等,主要是通过项目的方式,让大家一步步数据系统的设计流程,以及在java开发中用的比较多的MVC架构模式,走向老鸟的第一步!

python sci sci-hub 爬论文

sci-hub 爬虫 后续加入对于时间的排序,下载最新文献 参考: https://www.guanjihuan.com/archives/6846 https://blog.youkuaiyun.com/czh2637750821/article/details/115508922

weixin_42783619的博客 3542

Jsp页面循环显示自定义的list数据

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34008784的博客 934

【Godot】实现对话系统

在 Godot 中实现对话系统(Dialogue System)是游戏开发中的常见需求。Godot本身自带的的灵活性和轻量级脚本语言 GDScript 使得实现对话系统变得相对简单。以下是实现一个基础对话系统的示例。(语言为GDScript但高亮选择Python因为类似)通过 Godot 和 GDScript,我们可以给我们的游戏实现一个对话系统。从简单的文本显示到复杂的分支对话,Godot 提供了足够的灵活性来满足我们的需求。如果需要更高级的功能,可以尝试使用现成的插件如 Dialogic。

Octopus2077的博客 2523

MVC与三层架构理解

1. JSP的发展 2. MVC思想 优缺点 3. 三层架构 为什么使用三层 三层优缺点 4. MVC与三层架构的区别

iqqcode 7万+

SpringBoot 通过 JMS 集成 IBM MQ

IBM MQ 作为老牌的企业级消息中间件,虽然在当下云原生时代已不再是主流选择,但在金融、银行、保险等传统行业的核心业务系统中仍然占据着重要地位。这些行业对系统的稳定性、可靠性和事务一致性有着极高的要求,IBM MQ 正是在这些方面表现出色。尽管近年来 RabbitMQ、Apache Kafka 等新一代消息中间件在新兴项目中更受欢迎,但许多金融公司和大型企业仍在使用 IBM MQ 作为核心业务系统的消息传递基础设施。

小单的博客专栏 953

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3555

三分钟教你学会MVC框架——基于java web开发

转载自;http://www.cnblogs.com/levenyes/p/3290885.html MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。                                     

xiaodanjava的专栏 4万+

Dify 第 19 篇 手把手教你开发 Dify 插件:从零实现一个时间工具

本文介绍了Dify平台的插件开发机制和流程。Dify支持多种插件类型,包括模型、工具、数据源等,可通过CLI工具快速开发插件。文章详细讲解了如何安装Dify CLI工具,并演示了从零开发一个获取系统时间插件的完整过程,包括项目初始化、文件解读和打包部署。通过该教程,开发者可以快速掌握Dify插件开发的核心要点,实现自定义功能扩展。

甘蓝的专栏 2451

JAVA中的MVC三层架构

MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序分为主要的部分:模型(Model)、视图(View)和控制器(Controller)。这种架构有助于提高代码的可维护性和可扩展性。Spring框架通过@Controller@Service和注解清晰地划分了MVC三层架构的各个层次,使得开发人员能够更高效地构建和维护复杂的Web应用。POJO类:用于表示业务实体,通常包含属性和相关的getter/setter方法。DAO类:用于封装对数据库的操作,提供数据访问的接口。

楠寻寻的博客 3040

芯擎SEC1000芯片参数详细介绍

随着龙鹰一号的不断进化和应用,未来的智能座舱将不仅仅是显示和控制的集成,更是人与车之间的一种默契和无缝交互的体现。在汽车行业迈向智能化和电动化的浪潮中,座舱已不仅仅是一个驾驶者的操作空间,而是逐渐演变为一个集娱乐、信息、控制于一体的智能交互平台。今天的汽车不仅需要强劲的动力和炫酷的外观,更需要一颗强大而智能的“心脏”来支撑复杂的座舱体验和安全驾驶需求。想象一下,未来的汽车不再仅仅是交通工具,它将成为你的移动私人管家,了解你的习惯,甚至提前预测你的需求。让我们一起走进龙鹰一号的世界,探索智能座舱的无限可能!

weixin_43199439的博客 1725

【ComfyUI】Wan2.2 + IndexTTS 图像数字人或动物口播视频生成

本文介绍了一个基于ComfyUI的数字人口播视频生成工作流,整合了IndexTTS和图像处理技术。该系统通过多模型协同工作,实现从形象图、文本和音频输入到自动生成口播视频的全流程。核心包含WanVideo系列模型,通过CLIP Vision、T5文本编码器和Wav2Vec语音模型分别处理视觉特征、语义理解和口型同步。工作流涵盖素材加载、特征提取、音频处理和视频生成等节点,支持人物、动物等多种主体的口播内容创作。该方案自动化程度高,适用于知识讲解、剧情旁白等多种场景,能帮助创作者高效产出高质量口播视频。

Mr数据杨 2058

MVC架构简单介绍

MVC是Model(模型)+view(视图层)+controller(控制器)这三者的缩写。 在百度百科中是这样介绍的:MVC强制性地使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet +javabean的模式

weixin_69656529的博客 9388

组态王的日历时间控件脚本

日期时间控件中的脚本中在小于10的月份和天数前必须要加上0,这是由首字符对比机制规定的,首字母相同,就不再不做对比了,比如1和11,是一样的。首字母不同,再比较下一位。 float Ayear1; float Amonth1; float Aday1; string temp1; Ayear1=sd.Year; Amonth1=sd.Month; Aday1=sd.Day; temp1=StrFromInt( Ayear1, 10 ); if(Amonth1<10) temp1=temp1+"-0"+

逍遥子的博客 5718

Java MVC 架构初学者指南

由于 MVC 具有已定义的结构,因此可以利用它来创建一个非常好的策略来完成开发过程,每个团队成员都处理架构的一个部分,从而使过程不那么复杂。我们将讨论 MVC 的基础知识,它的优点,最后,一个简单的代码将帮助您以更清晰的方式理解 Java 中的 MVC 实现。MVC 架构解决了这个问题,因为开发人员可以为不同的设备创建不同的接口,并根据从哪个设备发出请求,控制器将选择合适的视图。因此,如果您想在应用程序开发人员的职业生涯中达到新的高度,那么掌握 MVC 架构及其工作应该是您的首要任务。

allway2的博客 1301

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java 新手入门:MVC 架构下的用户注册与登录开发教程

本文介绍了Java MVC架构下用户注册与登录功能的开发流程。首先解释了MVC架构的分工思想:Model处理数据、View负责展示、Controller协调调度。开发前需准备JDK、IDE、MySQL和Tomcat等工具。数据库设计重点包括用户表的创建和密码加密存储。代码实现分为Model层(实体类User.java和DAO操作类UserDAO.java)和Controller层(Servlet处理请求)。文中提供了完整的代码示例,包括JDBC连接工具、用户注册逻辑和密码加密方法,适合

2301_81512868的博客 919

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【JavaWeb】之MVC三层架构

JavaWeb基础MVC三层架构详细介绍~

小新要变强的博客 3290

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 线程同步synchronized的学习案例-01
下一篇: 对onreadystatechange属性的理解
p_m_notes
博客等级 码龄14年 3粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值