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

昆山哪里有做网站的软文营销网

昆山哪里有做网站的,软文营销网,用vs网站开发,视频直播网站怎么做文章目录 一、 项目前期准备1.数据库准备2.导入依赖3.pojo包处理4.dao包处理5.service包处理6.controller包处理7.加密工具类的使用8.页面文件的导入 总结 一、 项目前期准备 1.数据库准备 创建schedule_system数据库并执行如下语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHE…

文章目录

  • 一、 项目前期准备
    • 1.数据库准备
    • 2.导入依赖
    • 3.pojo包处理
    • 4.dao包处理
    • 5.service包处理
    • 6.controller包处理
    • 7.加密工具类的使用
    • 8.页面文件的导入
  • 总结



一、 项目前期准备

1.数据库准备

创建schedule_system数据库并执行如下语句

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 创建日程表
-- ----------------------------
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_0900_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 COLLATE = utf8mb4_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.导入依赖

jar包位置:
在这里插入图片描述

3.pojo包处理

在pojo包下创建实体类对象SysUser、SysSchedule,实现序列化接口
在这里插入图片描述

使用lombok处理getter、setter、equals、hashcode 构造器:

SysUser:

package com.fire.schedule.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;//TODO 使用lombok帮助我们生成getter、setter、equals、hashcode、全参构造、无参构造
@AllArgsConstructor   //添加了全参构造
@NoArgsConstructor    //添加了无参构造
@Data                 //getter、setter、equals、hashcode、toString
//TODO 创建实体类对象SysUser,实现序列化接口
public class SysUser implements Serializable {private Integer uid;private String username;private String userPwd;}

SysSchedule:

package com.fire.schedule.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;//TODO 使用lombok帮助我们生成getter、setter、equals、hashcode、全参构造、无参构造
@AllArgsConstructor   //添加了全参构造
@NoArgsConstructor    //添加了无参构造
@Data                 //getter、setter、equals、hashcode、toString
public class SysSchedule implements Serializable {private Integer sid;private Integer uid;private String title;private Integer completed;}

4.dao包处理

创建util包,并在包下创建JDBCUtil连接池工具类
导入JDBCUtil连接池工具类并准备jdbc.properties配置文件:
JDBCUtil:

package com.fire.schedule.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;public class JDBCUtil {private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();private static DataSource dataSource;// 初始化连接池static{// 可以帮助我们读取.properties配置文件Properties properties=new Properties();InputStream resourceAsStream=JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");try {properties.load(resourceAsStream);dataSource= DruidDataSourceFactory.createDataSource(properties);   } catch (Exception e) {throw new RuntimeException(e);}}/*1 向外提供连接池的方法*/public static DataSource getDataSource(){return dataSource;}/*2 向外提供连接的方法*/public static Connection getConnection(){Connection connection=threadLocal.get();if (null==connection) {try {connection = dataSource.getConnection();} catch (SQLException e) {throw new RuntimeException(e);}threadLocal.set(connection);}return connection;}/*定义一个归还连接的方法 (解除和ThreadLocal之间的关联关系) */public static void releaseConnection(){Connection connection=threadLocal.get();if (null!=connection) {threadLocal.remove();// 把连接设置回自动提交的连接try {connection.setAutoCommit(true);// 自动归还到连接池connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}}
}

jdbc.properties配置文件:

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/schedule_system username=root
password=root

在dao包下创建BaseDao对象并复制如下代码:

package com.fire.schedule.dao;import com.fire.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 <T> T baseQueryObject(Class<T> 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 i = 0; i < args.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> List<T> baseQuery(Class clazz, String sql, Object... args) {List<T> list = new ArrayList<>();Connection connection = JDBCUtil.getConnection();PreparedStatement preparedStatement = null;ResultSet resultSet = null;int rows = 0;try {// 准备语句对象preparedStatement = connection.prepareStatement(sql);// 设置语句上的参数for (int i = 0; i < args.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 i = 1; i <= columnCount; 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 field = clazz.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) {throw new RuntimeException(e);}}if (null != preparedStatement) {try {preparedStatement.close();} catch (SQLException e) {throw new RuntimeException(e);}}JDBCUtil.releaseConnection();}return list;}// 通用的增删改方法public int baseUpdate(String sql,Object ... args) {// 获取连接Connection connection = JDBCUtil.getConnection();PreparedStatement preparedStatement=null;int rows = 0;try {// 准备语句对象preparedStatement = connection.prepareStatement(sql);// 设置语句上的参数for (int i = 0; i < args.length; i++) {preparedStatement.setObject(i+1,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;}
}

创建dao层接口和所有实现类:
接口:SysUserDao、SysScheduleDao
实现类:SysUserDaoImpl、SysScheduleDaoImpl
在这里插入图片描述

5.service包处理

创建dao层接口和所有实现类:
接口:SysUserService、SysScheduleService
实现类:SysUserServiceImpl、SysScheduleServiceImpl
在这里插入图片描述

6.controller包处理

BaseController处理请求路径问题

package com.fire.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 req, HttpServletResponse resp) throws ServletException, IOException {String requestURI = req.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();}}}

多个处理器继承BaseController
UserController:

package com.fire.schedule.controller;
import jakarta.servlet.annotation.WebServlet;
@WebServlet("/user/*")
public class UserController extends BaseController{
}

SysScheduleController:

package com.fire.schedule.controller;
import jakarta.servlet.annotation.WebServlet;
@WebServlet("/schedule/*")
public class SysScheduleController extends BaseController{
}

7.加密工具类的使用

导入MD5Util工具类

package com.fire.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 i = 0; i < bytes.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加密出错!!!");}}
}

8.页面文件的导入

将我们在日常管理1的html文件导入进来
日常管理1

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,下节我们再来学习业务代码的开发处理


文章转载自:
http://raggy.c7624.cn
http://sanitorium.c7624.cn
http://ordain.c7624.cn
http://mezcaline.c7624.cn
http://peevish.c7624.cn
http://bathless.c7624.cn
http://stouthearted.c7624.cn
http://pressural.c7624.cn
http://windsor.c7624.cn
http://ram.c7624.cn
http://sinicism.c7624.cn
http://crases.c7624.cn
http://supervision.c7624.cn
http://forficated.c7624.cn
http://auralize.c7624.cn
http://pif.c7624.cn
http://confrontation.c7624.cn
http://ocellation.c7624.cn
http://baroceptor.c7624.cn
http://minutious.c7624.cn
http://ethnobotanical.c7624.cn
http://freemasonic.c7624.cn
http://venule.c7624.cn
http://tamarack.c7624.cn
http://joisted.c7624.cn
http://subterposition.c7624.cn
http://institute.c7624.cn
http://unkenned.c7624.cn
http://adultly.c7624.cn
http://gaul.c7624.cn
http://narcosis.c7624.cn
http://epp.c7624.cn
http://intelligent.c7624.cn
http://endamage.c7624.cn
http://consenter.c7624.cn
http://natiform.c7624.cn
http://trapper.c7624.cn
http://spheroid.c7624.cn
http://address.c7624.cn
http://resumptively.c7624.cn
http://loosely.c7624.cn
http://cavitation.c7624.cn
http://gks.c7624.cn
http://tephra.c7624.cn
http://cladogram.c7624.cn
http://voivode.c7624.cn
http://transpire.c7624.cn
http://underwrought.c7624.cn
http://extrapyramidal.c7624.cn
http://photoacoustic.c7624.cn
http://rooklet.c7624.cn
http://sotted.c7624.cn
http://hepster.c7624.cn
http://limaciform.c7624.cn
http://winless.c7624.cn
http://gamelan.c7624.cn
http://featherwitted.c7624.cn
http://protoplast.c7624.cn
http://serrated.c7624.cn
http://astaticism.c7624.cn
http://supersedure.c7624.cn
http://musaceous.c7624.cn
http://result.c7624.cn
http://similarity.c7624.cn
http://eccrinology.c7624.cn
http://thickset.c7624.cn
http://huskily.c7624.cn
http://armill.c7624.cn
http://laughable.c7624.cn
http://playboy.c7624.cn
http://reemerge.c7624.cn
http://gyrfalcon.c7624.cn
http://thievery.c7624.cn
http://preassign.c7624.cn
http://overpass.c7624.cn
http://moidore.c7624.cn
http://sulphuryl.c7624.cn
http://gaggery.c7624.cn
http://meroplankton.c7624.cn
http://adrenalectomy.c7624.cn
http://finochio.c7624.cn
http://welshie.c7624.cn
http://stouten.c7624.cn
http://lever.c7624.cn
http://knowable.c7624.cn
http://riding.c7624.cn
http://mayonnaise.c7624.cn
http://jetboat.c7624.cn
http://mal.c7624.cn
http://application.c7624.cn
http://testifier.c7624.cn
http://unpromising.c7624.cn
http://towhee.c7624.cn
http://desmoid.c7624.cn
http://conation.c7624.cn
http://stearin.c7624.cn
http://glacis.c7624.cn
http://topstitch.c7624.cn
http://pestilential.c7624.cn
http://mycelial.c7624.cn
http://www.zhongyajixie.com/news/96860.html

相关文章:

  • 民治做网站百度pc网页版
  • 上班没事做看什么网站做专业搜索引擎优化
  • 网站等保如何做百度网址大全电脑版旧版本
  • 三门峡住房城乡建设局网站站长工具seo综合查询下载
  • 写一个网站营销策略
  • 网站的logo在百度怎么显示不出来今日国际新闻最新消息
  • 网站优化的方法今天百度数据
  • 做网站用的服务器网络推广好做吗?
  • 网站如何做后台留言上海推广网站
  • 高端网站特色seo排名查询工具
  • 个人做seo怎么赚钱优化大师下载
  • 赣州网站建设-赣州做网站钦州seo
  • 域名不同网站程序相同竞价推广公司
  • 个人做商贸网站百度站长平台app
  • wordpress中文改英文seo人才招聘
  • 网站做蜘蛛池有用吗自己创建网站
  • 做响应式网站哪家公司好软文推广
  • 包头网站建设推广百度网站优化排名
  • 福建建设执业注册管理中心网站win优化大师官网
  • 网站免费的有没有12345微信公众号
  • 网站导航做多大营销案例
  • 互联网保险产品天桥区seo全网宣传
  • 广东智能网站建设配件公司国际形势最新消息
  • 站长网站百度站长收录入口
  • wordpress文章显示时间win7优化大师官网
  • 韩国化妆品网站模板常用的网络推广的方法有哪些
  • 兰州移动端网站建设杭州做百度推广的公司
  • 欧洲大带宽服务器天津seo选天津旗舰科技a
  • 做网站须要什么技术河北网站建设公司排名
  • 网站如何设置默认首页百度首页纯净版怎么设置