基本功能和后台联调

1、首页的所有博客

因为是前后台都是本地开发,所以前端vue需要设置proxy:修改/config/index.js中的这个proxyTable

    proxyTable: {
'/api': {
target: 'http://localhost:8888',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
},

同时将mock.js中的模拟数据方法注释掉

2、后台添加cors

package com.nxz.blog.config;

import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; @Component
public class CorsFilter implements Filter { final static org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(CorsFilter.class); public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest reqs = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(req, res);
} public void init(FilterConfig filterConfig) {
} public void destroy() {
}
}

3、添加后台接口

controller

package com.nxz.blog.controller;

import com.nxz.blog.pojo.vo.PostVo;
import com.nxz.blog.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
@RequestMapping("posts")
public class PostController { @Autowired
private PostService postService; /**
* 获取所有的博客(博客列表展示)
*
* @return
*/
@GetMapping//不设置具体的mapping,会默认“/posts”路径
public List<PostVo> getPostList() {
return postService.getAllPostList();
}
}

service

package com.nxz.blog.service;

import com.nxz.blog.dao.PostDao;
import com.nxz.blog.entity.Post;
import com.nxz.blog.pojo.vo.PostVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.ArrayList;
import java.util.List; @Service
public class PostService { @Autowired
private PostDao postDao; /**
* 获取所有的博客信息
* @return
*/
public List<PostVo> getAllPostList() {
List<PostVo> resList = new ArrayList<>(); List<Post> allPostList = postDao.findAll();
allPostList.stream().forEach(item -> {
PostVo postVo = new PostVo();
BeanUtils.copyProperties(item, postVo);
resList.add(postVo);
});
return resList;
} }

dao:

package com.nxz.blog.dao;

import com.nxz.blog.entity.Post;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; @Repository
public interface PostDao extends JpaRepository<Post, Integer> { }

postvo:

package com.nxz.blog.pojo.vo;

import lombok.Data;

@Data
public class PostVo { private Integer postId; private String postTitle; private String postContent; private Long createDate; }

post:

package com.nxz.blog.entity;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id; @Entity
@Data
public class Post { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer postId; private String postTitle; private String postContent; private Long createDate; private Long updateDate; }

5、修改后访问首页,可以返回后台模拟的数据

6、修改文章的详情接口

注意:修改post结构是post请求格式,又因为axios发送post格式的请求会有跨域问题,所以后端需要配置一下(好多人都说需要axios发送post跨域请求不支持application/json,需要修改content-type,但是我在开发中并没有修改content-type,json格式也可,只需要修改后台允许跨域即可)

//后台用security安全框架,所以需要配置
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.authorizeRequests()
.anyRequest().permitAll()
.and().cors()//****
.and().csrf().disable();
} @Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST","PUT","DELETE"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}

修改post接口:

controller

@RestController
@RequestMapping("posts")
public class PostController { @Autowired
private PostService postService; @Autowired
private PostClassService postClassService; @PostMapping("/post")
public Result createPost(@RequestBody PostDto postDto){
postService.createPost(postDto);
return Result.success();
}

service:

   @Autowired
private PostDao postDao; /**
* 保存一个新建的post
*
* @param postDto
*/
@Override
public void createPost(PostDto postDto) {
Post post = new Post();
BeanUtils.copyProperties(postDto, post);
postDao.save(post);
}

dao:

dao使用的jpaReposiroty默认的save方法,只需要将post对象传入即可,其中post对象中的id有值代表修改,无值代表新建

7、修改post后重新进入,会出现以下情况,html标签会输出到页面上

这时候需要将文本的html内容输出为真正的html标签:

<span v-html="postContent"></span>

修改后:

8、记录一个问题,就是之前postcontent字段数据库用的是varchar类型,简单内容还可以,但是对于博客,需要的是长字段存储,因此数据库改为Text类型

修改post.java

@Entity
@Data
public class Post { @Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(length = 32)
private String postId; private String postTitle; @Lob//加上之后,因为用的jpa ddl-auto:update 因此重启项目后会自动更新表字段,如果不行的话,删掉表后重启,会自动建表
private String postContent; private Long createDate; private Long updateDate; }

9、修改一个post示例:

最新文章

  1. Android-横竖屏切换问题(转)
  2. C#设计模式系列:状态模式(State)
  3. WinDbg 蓝屏dump分析教程
  4. smbclient提示NT_STATUS_INSUFFICIENT_RESOURCES
  5. Javascript定时器(三)——setTimeout(func, 0)
  6. SyBase Powerdesigner生成数据库详细表
  7. WEB项目后端跨域请求
  8. BZOJ 2435 道路修建 NOI2011 树形DP
  9. Spring MVC 之请求处理方法可接收参数(三)
  10. Unity3D 创建动态的立方体图系统
  11. 如何在PowerDesigner将PDM导出生成WORD文档或者html文件
  12. 从头开始-06.C语言中预处理指令
  13. checking for known struct flock definition... configure: error: Don&#39;t know how to define struct flock on this system, set --enable-opcache=
  14. cannot be cast to java.lang.Comparable
  15. 2.Hadoop平台架构准备工作
  16. 手游折扣app排行榜前10名_2018哪个折扣app最低最好
  17. TP框架(接口文档模板框架)
  18. 2017-2018-2 20165318 实验四《Android程序设计》实验报告
  19. POJ 2516 Minimum Cost(拆点+KM完备匹配)
  20. 【python】Beautiful Soup的使用

热门文章

  1. XMPP即时通讯协议使用(七)——利用Strophe实现WebIM及strophe.plugins插件使用
  2. printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换
  3. smbumount - 为普通用户卸载smb文件系统
  4. python如何获取变量的变量名
  5. IDA Pro - 如何得到比较清楚的逆向伪代码
  6. java方法执行流程解析
  7. solrJ 基本使用
  8. STM32中stm32f0xx_flash.icf文件的作用详解!(不错的!)
  9. &quot;sorted()&quot;中的&quot;Key Functions&quot;
  10. macOS系统安装gnuplot(解决Terminal type set to unknown)