SpringMVC + MyBatis3 实现的个人博客
为了学习spring MVC,而做的一个简单的个人博客,项目地址如下:
https://github.com/DreamFinderHou/PersonalBlog
https://github.com/DreamFinderHou/PersonalBlog
项目用到的技术:
实现的功能:
开发过程中遇到的问题及解决办法:
1. 绿色版MySQL的安装与启动:
参考:http://blog.csdn.net/anndy_/article/details/51093326
根据该向导操作时,可能在修改密码步骤报错,这是需要使用命令mysqld --initialize(生成一个随机密码),然后 net start mysql,再去修改密码。
2. 当使用Navicat建立连接时出现如下错误:
2005 -Unknown MySQL server host ‘localhost’(0)
那是因为你电脑没联网,Navicat的使用需要联网。
3. 各种资源找不到的情况:
切记一点:你项目中的各种路径的参照都是以最后你打成的war包的路径去找的。如果不确定export一个war包看一下。
Classpath和classpath*的使用:参照 http://perfy315.iteye.com/blog/2009258
4. Spring MVC开发项目,welcome-page的实现:
1) 如果要配置为index.html等静态页面为welcome-page,首先需要在web.xml中配置
<mvc:annotation-driven/>
<mvc:resourcesmapping="/*.html"location="/"/>
如果没有
2) 在@Controller类中声明一个@RequestMapping(value=”/”)的方法,返回作为项目默认访问页的页面,当你的默认访问页为JSP时,必须采用这种方法。
如下:
@RequestMapping(value="/")
public String welcomePage(Model Model){
return "welcome";
}
5. 页面中引用CSS文件,路径找不到:
可以使用JSTL来解决,如下:
">
6. Spring MVC + JSP + JSTL + EL 实现分页:
7. 当更新了CCS文件并且重启了Tomcat服务器后,更改后的CSS样式不起作用,记得重启浏览器,清空缓存。
8. 新建和编辑公用一个JSP页面的处理方法:
因为重新编辑一个blog需要保存它的ID传到后台处理,所以我采用了如下方法,当然也可以用路径变量在前台页面加些判断控制,或者在后台controller处理时将ID放到model变量中保存,不过我感觉下面的更简单一点:
前台和后台采用了表单绑定,具体细节可以查看《Sping MVC学习指南》这本书关于表单绑定和表单标签库一节。
blogediter.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
New Blog
为什么要将表单标签
首先如果直接在
则请求至后台的http路径会报错如下:
http://localhost:8080/saveAndUpdateBlog?blogID=144(正确应该为http://localhost:8080/PersonalBlog/saveAndUpdateBlog?blogID=144)
并且不允许在
所以采用action关联
controller实现
@RequestMapping(value="/saveAndUpdateBlog")
public String saveAndUpdateBlog(@RequestParam int blogID, @ModelAttribute Blog blog, RedirectAttributes redirectAttributes){
if(blogID == 0){
blogMapper.save(blog);
}else{
Map parm = new HashMap<>();
parm.put("blogID", blogID);
parm.put("blog", blog);
blogMapper.update(parm);
}
String tags = blog.getBlogTags();
String[] tagList = tags.split("\\s+");
/**返回前台结果**/
Map responseParm = new HashMap<>();
responseParm.put("blog", blog);
responseParm.put("tagList", tagList);
redirectAttributes.addFlashAttribute("responseParm",responseParm);
return "redirect:/blog/" + blog.getBlogID();
}
9. basePath的使用:
在的href或者
10. 前台数据传到后台乱码的问题:
首先背景情况为,我的JSP页面和MySQL中的varchar和TEXT的编码都设置为了UTF-8,可是保存到数据库中的数据还是乱码。我用logger.info方法在controller中打印出日志发现,日志中数据就已经是乱码,这说明在前台传递数据到controller的过程中就已经是乱码,跟数据库无关。
解决方法:http://blog.csdn.net/kalision/article/details/46441081/
这应该跟HttpServletRequest和HttpServletResponse默认处理与前台的数据的编码为ISO-8859-1有关。
11. SpringMVC + Mybatis3的一些常见问题请查看至:
http://blog.csdn.net/java_hxc_sz/article/details/53670086
http://blog.csdn.net/java_hxc_sz/article/details/53645116