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

做一个网站的费用构成郑州新闻最新消息今天

做一个网站的费用构成,郑州新闻最新消息今天,搜索引擎收录查询,南城网站建设公司策划本教程需要安装以下工具#xff0c;如果不清楚怎么安装的可以看下我的这篇文章 链接: https://blog.csdn.net/qq_30627241/article/details/134804675 管理工具#xff1a; maven IDE#xff1a; IDEA 数据库#xff1a; MySQL 测试工具#xff1a; Postman 打开IDE…本教程需要安装以下工具如果不清楚怎么安装的可以看下我的这篇文章 链接: https://blog.csdn.net/qq_30627241/article/details/134804675 管理工具 maven IDE IDEA 数据库 MySQL 测试工具 Postman 打开IDEA 创建项目创建项目时保持网络通畅 设置项目的基本信息其中注意jdk版本要与Java版本匹配这里使用jdk1.8和java8 选择SpringBoot版本选择项目依赖依赖可以创建完项目后在pom文件中修改 至此项目创建完成 创建数据库 创建用户表 CREATE TABLE user (uid int(10) primary key NOT NULL AUTO_INCREMENT,uname varchar(30) NOT NULL,password varchar(255) NOT NULL,UNIQUE (uname) );uid: 用户编号主键自增 uname: 用户名作为登录的账号业务主键不可重复 password: 密码因为可能要加密所以长度设了较长的255 配置数据库 1、找到配置文件application.properties # 配置端口号为8081 server.port8081# 配置数据库 # 配置驱动 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver # 若连接的是云数据库则将localhost改为云端ip spring.datasource.urljdbc:mysql://localhost:3306/summer?serverTimezoneUTC # Mysql用户 spring.datasource.usernameroot # Mysql对应用户密码 spring.datasource.password1234562、输入数据库相关配置信息此处配置了项目端口号为8081可不配置默认端口号为8080 注意配置url处summer改为你的数据库名称 现在运行项目就能成功了 3、在IDEA中连接数据库非必要步骤连了开发方便些 配置如下 配置时区与配置文件中的一致 点击Test connection测试一下如遇提示请下载 下载后再点击成功如下 现在可以在IDEA中管理数据库了 在说项目的目录结构之前我们先来聊一聊后端的架构大概是什么样的方便我们对目录结构的理解   数据持久层的作用是在java对象与数据库之间建立映射也就是说它的作用是将某一个Java类对应到数据库中的一张表。在我们的项目中就将创建一个实体类User映射到数据库的user表表中的每个字段对应于实体类的每个属性。而之前配置的JPA的作用就是帮助我们完成类到数据表的映射。   repository: 存放一些数据访问类也就是一些能操纵数据库的类的包比如存放能对user表进行增删改查的类   domain存放实体类的包比如User类其作为对应数据库user表的一个实体类 业务逻辑层的作用是处理业务逻辑。比如在本项目中我们就在业务逻辑层实现登录注册的逻辑像是判断是否有用户名重复密码是否正确等逻辑   service: 存放业务逻辑接口的包   serviceImpl: 存放业务逻辑实现类的包其中的类实现service中的接口 控制层的作用是接收视图层的请求并调用业务逻辑层的方法。比如视图层请求登录并发来了用户的账号和密码那么控制层就调用业务逻辑层的登录方法并将账号密码作为参数传入在将结果返回给视图层。   controller: 存放控制器的包。比如UserController 视图层的作用是展现数据由于本项目写的是纯后端就不展开解释视图层了。 注意根据架构我们可以发现最佳的开发方式是自底向上开发因为包之间的调用是上层调用下层所以下层先实现能保证实现多少测试多少 需要创建domain、repository、service、serviceImpl、controller、utils、config目录如图所示 这里再说下utils和config utils: 存放工具类一些自己封装的工具 config: 存放配置类一些配置如登录拦截器安全配置等 根据框架特点我们将自底向上开发所以将按照 实体类-dao-service-serviceImpl-controller 的顺序逐步开发。 所有类或接口的目录位置如图所示根据图来创建蓝色C图标是java类文件绿色I图标是java接口文件 实现User实体类 1、在domain中创建User.java 2、创建对应user表中字段的属性 其中注意要添加Table(name “user”)和Entity注解 Table(name “user”) 说明此实体类对应于数据库的user表 Entity 说明此类是个实体类 主键uid上要加上Id与GeneratedValue(strategy GenerationType.IDENTITY)注解 3、为属性生成get,set方法 将光标移至要插入get, set方法的位置 右键-generate-getter and setter 选中所有属性-OK 最后得到User.java也可以复制至此User实体类就创建好啦如果要实现其他表的实体类也类似。 package summer.summerdemo.domain;import javax.persistence.*;Table(name user) Entity public class User {IdGeneratedValue(strategy GenerationType.IDENTITY)private long uid;private String uname;private String password;public long getUid() {return uid;}public void setUid(long uid) {this.uid uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname uname;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;} }实现UserDao 1、在repository包中创建UserDao接口 2、首先要添加注解Repository 接口要继承JpaRepository这样JPA就能帮助我们完成对数据库的映射也就是说接口里写的方法只要符合格式可以不需要实现SQL语句就能直接用了。 如果JPA没有提供你想要的方法可以自定义SQL语句 由于我们只实现登录注册功能所以只要有根据账号密码查询用户和插入用户信息的方法就行了这里我们已经实现了根据用户名密码查找用户的方法而插入用户信息的方法save(object o)JPA已经帮我们实现了可以直接调用这里就不需要写了。 注意: 这里接口方法的命名要按照JPA提供的命名格式,比如findBy, deleteBy等等,且要求驼峰命名法。如果自定义查询方法可以不遵守这个规则 package summer.summerdemo.repository;import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import summer.summerdemo.domain.User;Repository public interface UserDao extends JpaRepositoryUser, Long {User findByUname(String uname);User findByUnameAndPassword(String uname, String password); }实现UserService 1、在service包中创建UserService接口 2、添加登录注册需要用到的业务逻辑方法 package summer.summerdemo.service;import summer.summerdemo.domain.User;public interface UserService {/*** 登录业务逻辑* param uname* param password* return*/User loginService(String uname, String password);/*** 注册业务逻辑* param user* return*/User registerService(User user); }实现UserServiceImpl 1、在serviceImpl包中创建UserServiceImpl类 2、添加需要实现的方法 添加implements UserService 此时会报错但没关系只是因为方法还没实现。 鼠标悬停在红色波浪线有一个红色灯泡的图标出现点击它自动生成需要实现的方法也可复制后面贴出来的代码 全选 生成后如下 3、实现登录业务逻辑 因为要用到UserDao中的方法所以先通过Resource注解帮助我们实例化UserDao对象 4、实现注册业务逻辑 5、添加Service注解 package summer.summerdemo.service.serviceImpl;import summer.summerdemo.domain.User; import summer.summerdemo.repository.UserDao; import summer.summerdemo.service.UserService; import org.springframework.stereotype.Service;import javax.annotation.Resource;Service public class UserServiceImpl implements UserService {Resourceprivate UserDao userDao;Overridepublic User loginService(String uname, String password) {User user userDao.findByUnameAndPassword(uname, password);if(user ! null){user.setPassword();}return user;}Overridepublic User registerService(User user) {if(userDao.findByUname(user.getUname())!null){return null;}else{User newUser userDao.save(user);if(newUser ! null){newUser.setPassword();}return null;}} } 实现工具类Result 工具类Result的作用是作为返回给前端的统一后的对象。也就是说返回给前端的都是Result对象只是对象中的属性不太一样这样方便前端固定接收格式。 package summer.summerdemo.utils;public class ResultT {private String code;private String msg;private T data;public String getCode() {return code;}public void setCode(String code) {this.code code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public T getData() {return data;}public void setData(T data) {this.data data;}public Result(){}public Result(T data){this.data data;}public static Result success(){Result result new Result();result.setCode(0);result.setMsg(成功);return result;}public static T ResultT success(T data){ResultT result new Result(data);result.setCode(0);result.setMsg(成功);return result;}public static T ResultT success(T data, String msg){ResultT result new Result(data);result.setCode(0);result.setMsg(msg);return result;}public static Result error(String code, String msg){Result result new Result();result.setCode(code);result.setMsg(msg);return result;} }可以看出Result是个模板类因此想要返回什么数据类型给前端都行如Result要是没看懂没关系看到下面就知道怎么用了。因为里面有很多静态方法可以直接用类名.方法名调用。 实现UserController 1、在controller包中创建UserController类 2、添加RestController与RequestMapping(“/user”)注解注入UserService 注解 3、实现登录的控制 4、实现注册的控制 RequestMapping中的/user是这个控制器类的基路由 PostMapping(“/login”)表示处理post请求路由为/user/login PostMapping(“/register”)表示处理post请求路由为/user/register package summer.summerdemo.controller;import summer.summerdemo.domain.User; import summer.summerdemo.service.UserService; import summer.summerdemo.utils.Result;import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestBody;import javax.annotation.Resource;RestController RequestMapping(/user) public class UserController {Resourceprivate UserService userService;PostMapping(/login)public ResultUser loginController(RequestParam String uname, RequestParam String password){User user userService.loginService(uname, password);if(user ! null){return Result.success(user,登录成功);}else{return Result.error(123,账号或密码错误);}}PostMapping(/register)public ResultUser registerController(RequestBody User newUser){User user userService.registerService(newUser);if(user ! null){return Result.success(user,注册成功);}else{return Result.error(456,用户名已存在);}} }处理跨域访问问题 跨域问题可以简单理解成如果你的前端项目的IP地址和端口号和后端的IP地址和端口号不一样就会导致前端无法获取到数据这是一个规定。而在前后端分离开发的项目中前后端项目的端口号一般都是不一样的假设我们这个项目的前端端口号是 8080后端端口号是 8081就会造成跨域访问的问题跨域访问的问题可以在前端解决也可以在后端解决后端只要加上一个配置文件就行了 1 、在config文件下创建全局跨域配置类GlobalCorsConfig.java 注意SpringBoot2.4.0 以前下方 allowedOriginPatterns 需要被allowedOrigins代替 package summer.summerdemo.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration public class GlobalCorsConfig {Beanpublic WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurer() {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**) //添加映射路径“/**”表示对所有的路径实行全局跨域访问权限的设置.allowedOriginPatterns(*) //开放哪些ip、端口、域名的访问权限 SpringBoot2.4.0以后allowedOrigins被allowedOriginPatterns代替.allowCredentials(true) //是否允许发送Cookie信息.allowedMethods(GET, POST, PUT, DELETE) //开放哪些Http方法允许跨域访问.allowedHeaders(*) //允许HTTP请求中的携带哪些Header信息.exposedHeaders(*); //暴露哪些头部信息因为跨域访问默认不能获取全部头部信息}};} }2、接下来就是运行项目成功如下
http://wiki.neutronadmin.com/news/8323/

相关文章:

  • 怎么做网站服务器系统郑州网络营销学校
  • 网站广告设计怎么做制作网站公司多少钱
  • 网站备案名可以更改吗微信商城小程序定制
  • 泸县做网站公司西安公司排行榜
  • 深圳做企业网站哪家好免费软件下载网站入口
  • 北京网站备案负责人变更sem专业培训公司
  • 网站恶意做评论链接网站logo
  • led灯笼河网站建设网站的可行性分析怎么写
  • 电商网站seo优化今天安阳发生的重大新闻
  • 网站建设 分类广告修改wordpress博客
  • 黄金网站下载免费怎么做微信钓鱼网站吗
  • 专业建站服务公司安徽省招标投标信息网
  • 网站使用费用计算机信息网络系统
  • html5网站设计欣赏泰国购物网站大全
  • 建站公司 phpwindwordpress 如何编辑页面
  • 医疗网站专题模板叠石桥网站建设
  • 网站先做移动站在做pc站可行吗拓普建站推广
  • 网站关键词排名服务统计二级域名的网站流量有什么用
  • 南宁大型网站建设建站教程的优点
  • jsp网站开发过程展馆展示设计公司排名前十名
  • 网站改版的方式大致有建e室内设计网 3d模型医美前台
  • 国内哪家网站做的系统纯净wordpress禁止自适应
  • 网站开发工程师招聘要求网站路径
  • 巴中区建设局网站单页网站怎么做竞价
  • 国内大型网站制作软件开发流程详解
  • 百度网站优化外包企业网站建设管理系统
  • 那些做seo的网站怎么样做一个自己的网站
  • 淘宝客网站建设食品网站app建设
  • 网站建设职业发展前景和现状邢台移动网站建设费用
  • 网上商城网站设计湖南省建设厅政务中心网站