当前位置: 首页 > news >正文

正邦网站建设 优帮云公司做网站济南

正邦网站建设 优帮云,公司做网站济南,小视频广告,网站文案技巧一、概述: MVC(Model View Controller)是软件工程中的一种 软件架构模式 #xff0c;它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码#xff0c;将业务逻辑聚集到一个部件里面#xff0c;在改进和个性化定制界面及用户…一、概述: MVC(Model View Controller)是软件工程中的一种 软件架构模式 它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码将业务逻辑聚集到一个部件里面在改进和个性化定制界面及用户交互的同时不需要重新编写业务逻辑。 M代表Model模型层具体功能如下: 1.存放和数据库对应的实体类以及一些用于存储非数据库表完整相关的VO对象; 2.存放一些对数据进行逻辑运算操作的一些业务处理代码; V代表view视图层具体功能如下: 1.存放一些视图文件相关的代码,例如html、css以及js等 2.在前后端分离的项目中后端已经没有视图文件该层次已经衍化成独立的前端项目 C代表Controller控制层,具体功能如下: 1.接收客户端请求获得请求数据 2.将准备好的数据响应给客户端; 二、MVC模式下项目中的常见包: M: 1.实体类包(pojo /entity /bean):专门存放和数据库对应的实体类和一些VO对象; 2.数据库访问包(dao/mapper):专门存放对数据库不同表格CURD方法封装的一些类; 3.服务包(service):专门存放对数据进行业务逻辑运算的一些类; C: 控制层包(controller); V: 1.web目录下的视图资源html、css、js、img等 2.前端工程化后在后端项目中已经不存在了; 三、项目搭建: 项目结构: 1.数据库准备:创建schedule_system数据库并执行如下语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 8; DROP TABLE IF EXISTS sys_schedule; CREATE TABLE sys_schedule( sid int NOT NULL AUTO_INCREMENT, uid int NULL DEFAULT NULL, title varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0908_ai_Ci NULL DEFAULT NULL, completed int(1) NULL DEFAULT NULL, PRIMARY KEY(sid)USING BTREE )ENGINE InnoDB AUTO_INCREMENT 1 CHARACTER SET Utf8mb4 COLLATE utf8mb4_0900_ai_ci ROW_FORMAT Dynamic; DROP TABLE IF EXISTS sys_user; CREATE TABLE sys_user( uid int NOT NULL AUTO_INCREMENT username varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, user_pwd varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, PRIMARY KEY(uid)USING BTREE, UNIQUE INDEX username(username)USING BTREE )ENGINE InnoDB CHARACTER SET utf8mb4 COLLATEutf8mb4 0900_ai_ci ROW_FORMAT Dynamic; INSERT INTO sys_user VALUES(1,zhangsan,e10adc3949ba59abbe56e057f20f883e); INSERT INTO sys_user VALUES(2,lisi,e10adc3949ba59abbe56e057f20f883e); SET FOREIGN_KEY_CHECKS 1; 2.pojo包处理:使用lombok处理getter、setter、equals、hashcode、构造器 lombok使用步骤: (1)检查idea是否已经安装lombok插件 (2)检查是否勾选enableannotationprocessing (3)导入lombok依赖在实体类上添加注解 package com.atguigu.schedule.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; AllArgsConstructor//添加带有全部参数的构造器 NoArgsConstructor//添加无参构造器 Data//添加getter、setter、equals、hashcode public class SysUser implements Serializable{private Integer uid;private String username;private String userPwd; } package com.atguigu.schedule.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; AllArgsConstructor NoArgsConstructor Data public class SysSchedule implements Serializable{private Integer sid;private Integer uid;private String title;private Integer completed; } 3.dao包的处理:dao类用于定义针对表格的CURD的方法 每张数据表都应该对应一个dao类该dao类专门用于封装对该数据表的操作内容 (1).创建BaseDao对象 package com.atguigu.schedule.dao; import com.atguigu.schedule.util.JDBCUtil; import java.lang.reflect.Field; import java.sql.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; public class BaseDao{//公共的查询方法 返回的是单个对象public TT baseQueryObject(ClassT clazz, String sql,Object ... args){T t null;Connection connection JDBCUtil.getConnection();PreparedStatement preparedStatement null;ResultSet resultSet null;int rows 0;try{// 准备语句对象preparedStatement connection.prepareStatement(sql);//设置语句上的参数for(int i0;iargs.length;i){preparedStatement.setObject(i 1,args[i]);}// 执行 查询resultSet preparedStatement.executeQuery();if(resultSet.next()){t (T) resultSet.getobject(1);}}catch(Exception e){e.printStackTrace();}finally {if(null ! resultSet){try{resultSet.close();}catch(SQLException e){e.printStackTrace();}}if(null ! preparedStatement){try{preparedStatement.close();}catch(SQLException e){e.printStackTrace();}}JDBCUtil.releaseConnection();}return t;}//公共的查询方法 返回的是对象的集合public T ListT baseQuery(Class clazz,String sql,Object ... args){ListT list new ArrayList();Connection connection JDBCUtil.getConnection();PreparedStatement preparedStatement null;ResultSet resultSet null:int rows 0;try {// 准备语句对象preparedStatement connection.prepareStatement(sql);//设置语句上的参数for(int i0;iargs.length;i){preparedStatement.setObject(i 1,args[i]);}// 执行 查询resultSet preparedStatement.executeQuery();ResultSetMetaData metaData resultSet.getMetaData();int columnCount metaData.getColumnCount();//将结果集通过反射封装成实体类对象while(resultSet.next()){//使用反射实例化对象Object obj clazz.getDeclaredConstructor().newInstance();for(int i1;icolumnCount;i){String columnName metaData.getColumnLabel(i);Object value resultSet.getObject(columnName);//处理datetime类型字段和java.util.Data转换问题if(value.getClass().equals(LocalDateTime.class)){value Timestamp.valueOf((LocalDateTime) value);}Field fieldclazz.getDeclaredField(columnName);field.setAccessible(true);field.set(obj,value);}list.add((T)obj);}} catch (Exception e){e.printStackTrace();}finally {if(null ! resultSet){try{resultSet.close();}catch(SQLException e){e.printStackTrace();}}if(null ! preparedStatement){try{preparedStatement.close();}catch(SQLException e){e.printStackTrace();}}JDBCUtil.releaseConnection();}return list;}// 通用的增删改方法public int baseUpdate(String sql,Object ... args){//获取连接Connection connection JDBCUtil.getConnection();PreparedStatement preparedStatement null;int rows 0;try {// 准备语句对象preparedStatementconnection.prepareStatement(sql);//设置语句上的参数for(int i0;iargs.length;i){preparedStatement.setObject(i1,args[i]);}//执行 增删改executeUpdaterows preparedStatement.executeUpdate();// 释放资源(可选)}catch(SQLException e){e.printStackTrace();}finally{if(null ! preparedstatement){try{preparedStatement.close();}catch(SQLException e){throw new RuntimeException(e);}}JDBCUtil.releaseConnection();}return rows;} } (2).dao层所有接口: package com.atguigu.schedule.dao; public interface SysUserDao { } package com.atguigu.schedule.dao; public interface SysScheduleDao{ } (3).dao层所有实现类: package com.atguigu.schedule.dao.impl; importcom.atguigu.schedule.dao.BaseDao; import com.atguigu.schedule.dao.SysUserDao; public class SysUserDaoImpl extends BaseDao implements SysUserDao { } package com.atguigu.schedule.dao.impl; import com.atguigu.schedule.dao.BaseDao; import com.atguigu.schedule.dao.SysScheduleDao; public class SysScheduleDaoImpl extends BaseDao implements SysScheduleDao{ } 4.service包处理 (1)接口: package com.atguigu.schedule.service; public interface SysUserService{ } package com.atguigu.schedule.service; public interface SysScheduleService{ } (2)实现类: package com.atguigu.schedule.service.impl; import com.atguigu.schedule.service.SysUserService; public class SysUserServiceImpl implements SysUserService{ } package com.atguigu.schedule.service.impl; import com.atguigu.schedule.service.SysScheduleService; public class SysScheduleServiceImpl implements SysScheduleService{ } 5.controller包处理: (1)BaseController: package com.atguigu.schedule.controller; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.Method; public class BaseController extends HttpServlet {Overrideprotected void service(HttpServletRequest reg, HttpServletResponse resp) throws ServletException,IOException{String requestURI reg.getRequestURI();String [] split requestURI.split(/);String methodName split[split.length-1];Class clazz this.getClass();try{Method method clazz.getDeclaredMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);method.setAccessible(true);method.invoke(this,req,resp);}catch(Exception e){e.printStackTrace();}} } (2)多个处理器继承BaseController: package com.atguigu.schedule.controller; import jakarta.servlet.annotation.WebServlet; WebServlet(/user/*) public class UserController extends BaseController{ } package com.atguigu.schedule.controller; import jakarta.servlet.annotation.WebServlet; WebServlet(/schedule/*) public class SysScheduleControllerextends BaseController{6.加密工具类的使用: package com.atguigu.schedule.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public final class MD5Util {public static String encrypt(String strSrc){try{char hexChars[] {0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f};byte[]bytes strSrc.getBytes();MessageDigest md MessageDigest.getInstance(MD5);md.update(bytes);bytes md.digest();int j bytes.length;char[] chars new char[j * 2];int k 0;for(int i0;ibytes.length;i){byte b bytes[i];chars[k] hexChars[b 4 0xf];chars[k] hexChars[b 0xf];}return new String(chars);} catch (NoSuchAlgorithmException e){e.printStackTrace();throw new RuntimeException(MD5加密出错!!!);}} } 7.注册业务的处理: (1)controller: package com.atguigu.schedule.controller; import com.atguigu.schedule.pojo.SysUser; import com.atguigu.schedule.service.SysUserService; import com.atguigu.schedule.service.impl.SysUserServiceImpl; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import iava.io.IOException; WebServlet(/user/*) public class SysUserController extends BaseContoller{private SysUserService userService new SysUserServiceImpl();protected void regist(HttpServletRequest reg, HttpServletResponse resp) throws ServletException,IOException{//1 接收客户端提交的参数String username reg.getParameter(username);String userPwd reg.getParameter(userPwd);//2 调用服务层方法,完成注册功能//将参数放入一个SysUser对象中在调用regist方法时传入SysUser sysUser new SysUser(null,username,userPwd);int rows userService.regist(sysUser);//3 根据注册结果(成功 失败)做页面跳转if(rows0){resp.sendRedirect(/registSuccess.html);}else{resp.sendRedirect(/registFail.html);}} } } (2)service:  package com.atguigu.schedule.service; import com.atguigu.schedule.pojo.SysUser; public interface SysUserService {int regist(SysUserregistUser); } package com.atguigu.schedule.service.impl; import com.atguigu.schedule.dao.SysUserDao ; import com.atguigu.schedule.dao.impl.SysUserDaoImpl; import com.atguigu.schedule.pojo.SysUser; import com.atguigu.schedule.service.SysUserService; import com.atguigu.schedule.util.MD5Util; public class SysUserServiceImpl implements SysUserService{private SysUserDaouserDao new SysUserDaoImpl();Overridepublic int regist(SysUser sysUser){//将用户的明文密码转换为斋文码sysUser.setUserPwd(MD5Util.encrypt(sysUser.getUserPwd()));//调用DAO层的方法将sysUser信息存入数据库return userDao.addSysUser(sysUser);} } (3)DAO: package com.atguigu.schedule.dao; import com.atguigu.schedule.pojo.SysUser; public interface SysUserDao {int addSysUser(SysUser sysUser); } package com.atguigu.schedule.dao.impl; import com.atguigu.schedule.dao.BaseDao; import com.atguigu.schedule.dao.SysUserDao; import com.atguigu.schedule.pojo.SysUser; public class SysUserDaoImpl extends BaseDao implements SysUserDao {Overridepublic int addSysUser(SysUser sysUser){String sql insert into sys_user values(DEFAULT,?,?);return baseUpdate(sql,sysUser.getUsername(),sysUser.getUserPwd());} } 8.登录业务处理 (1)controller package com.atguigu.schedule.controller; import com.atquigu.schedule.pojo.SysUser; import com.atguigu.schedule.service.SysUserService; import com.atguigu.schedule.service.impl.SysUserServiceImpl; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import iakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; WebServlet(/user/*) public class SysUserController extends BaseContoller {private SysUserService userService new SysUserServiceImpl();protected void login(HttpServletRequest reg, HttpServletResponse resp) throws ServletException,IOException{//1.接收用户名和密码String username req.getParameter(username);String userPwd reg.getParameter(userPwd);//2.调用服务层方法,根据用户名查询用户信息SysUser loginUser userService.findByUsername(username);if(null loginuser){//跳转到用户名有误提示页resp.sendRedirect(/loginusernameError.html);}else if(!M5Util.encrypt(userPwd).equals(loginuser.getUserPwd())){//3 判断密码是否匹配//跳转到密码有误提示页resp.sendRedirect(/loginUserPwdError.html);}else{//4 跳转到首页resp.sendRedirect(/showSchedule.html);}} } (2)service package com.atguigu.schedule.service; import com.atguigu.schedule.pojo.SysUser; public interface SysUserservice {SysUser findByUsername(String username); } package com.atquigu.schedule.service.impl; import com.atguigu.schedule.dao.SysUserDao; import com.atguigu.schedule.dao.impl.SysUserDaoImpl; import com.atguigu.schedule.pojo.SysUser; import com.atguigu.schedule.service.SysUserService; import com.atguigu.schedule.util.MD5Util; public class SysUserServiceImpl implements SysUserService{private SysUserDao userDao new SysUserDaoImpl();Overridepublic SysUser findByUsername(String username){// 调用服务层方法,继续查询return userDao.findByUsername(username):} } (3)dao package com.atguigu.schedule.dao; import com.atguigu.schedule.pojo.SysUser; public interface SysUserDao {SysUser findByUsername(String username); } package com.atguigu.schedule.dao.impl; import com.atguigu.schedule.dao.BaseDao; import com.atguigu.schedule.dao.SysUserDao; import com.atguigu.schedule.pojo.SysUser; import java.util.List; public class SysUserDaoImpl extends BaseDao implements SysUserDao{Overridepublic SysUser findByUsername(String username){String sql select uid,username, user_pwd userPwd from sys_user where username ?;ListSysUser userList baseQuery(SysUser.class, sql, username);return null ! userList userlist.size()8? userList.get(0):null;} {
http://www.sczhlp.com/news/189858/

相关文章:

  • 自己做网站挂广告怎么赚钱吗谁有wap网站
  • 域名服务网站如何分析网站
  • 河南锦路路桥建设有限公司网站重庆网络营销网站建设销售
  • 怎么做仿制网站番禺大石做网站
  • 网站做跳转的意义怎么制作微信购物网站
  • 东莞企业网站定制设计在线动画手机网站模板下载安装
  • 辽宁省建设厅网站中级职称公示网站推广策略和效果评价
  • 如何网站数据备份腾讯企业邮箱网页版登录入口官网
  • 做网站一般用什么系统济南市做网站公司
  • 苏州网推广网站建设域名什么意思举个例子
  • 网站建设方案应急处置黄冈房产网信息网
  • 网站建设技术清单闽侯做网站
  • 网站制作方案模板公司网页设计费记哪个科目
  • 如何优化网站结构网站建设分金手指排名八
  • 网站建设投资预算html改变字体大小代码
  • 普兰店网站建设公司外贸 wordpress模板
  • 网站生成小程序网站建设便宜公司
  • 贵阳网站推广优化公司设计师网址导航 优设
  • 怎么查询商标名称是否注册沈阳做网站优化的公司
  • 25转行做网站运营张家口人社app最新下载
  • 网站建设 考核指标江门公司做网站
  • 中国门户网站建设重要性用vs2010做购物网站
  • 傻瓜式做网站中小企业网络营销策略
  • 东莞网站设计排行榜语言可以做网站吗
  • 云免网站空间做一个谷歌网站多少钱
  • 甘肃古典建设集团有限公司网站wordpress4.9.3漏洞
  • 深圳个人网站制作宝丰网站制作公司
  • 2008系统怎么搭建多个网站网站建设知名企业
  • ftp 网站管理文昌市住房和城乡建设局网站
  • 设计网站最重要的是要有良好的wordpress接入信用卡付款