基于javaweb+mysql的jsp+servlet日记系统(java+jsp+bootstrap+servlet+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet日记系统(java+jsp+bootstrap+servlet+mysql)
项目介绍
本项目主要功能有: 写日记 查看日记 日记删除 日记修改 日记类别添加 日记类别修改 日记类别删除 个人信息查看 个人信息修改 分页功能
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
技术栈
- 后端:servlet 2. 前端:JSP+bootstrap+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中db.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8080/ 登录
/**
* 日记类别Servlet类
*
*/
public class DiaryTypeServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
DbUtil dbUtil=new DbUtil(); // 实例化数据库工具类
DiaryTypeDao diaryTypeDao=new DiaryTypeDao(); // 实例化日记类别类
DiaryDao diaryDao=new DiaryDao(); // 实例化日记类
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String action=request.getParameter("action"); // 获取请求方法
if("list".equals(action)){ // 获取列表
diaryTypeList(request,response);
}else if("preSave".equals(action)){ // 准备日记类别保存
diaryTypePreSave(request,response);
}else if("save".equals(action)){ // 日记类别保存
diaryTypeSave(request,response);
}else if("delete".equals(action)){ // 日记类别删除
diaryTypeDelete(request,response);
}
}
/**
* 日记类别列表
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryTypeList(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 记住用户密码到Cookie中
* @param userName 用户名
* @param password 密码
* @param response
*/
private void rememberMe(String userName,String password,HttpServletResponse response){
Cookie user=new Cookie("user",userName+"-"+password);
user.setMaxAge(1*60*60*24*7); // 一个星期
response.addCookie(user);
}
}
/**
* 登录验证拦截器
*
*/
private static final long serialVersionUID = 1L;
DbUtil dbUtil=new DbUtil(); // 实例化数据库工具类
DiaryTypeDao diaryTypeDao=new DiaryTypeDao(); // 实例化日记类别类
DiaryDao diaryDao=new DiaryDao(); // 实例化日记类
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String action=request.getParameter("action"); // 获取请求方法
if("list".equals(action)){ // 获取列表
diaryTypeList(request,response);
}else if("preSave".equals(action)){ // 准备日记类别保存
diaryTypePreSave(request,response);
}else if("save".equals(action)){ // 日记类别保存
diaryTypeSave(request,response);
}else if("delete".equals(action)){ // 日记类别删除
diaryTypeDelete(request,response);
}
}
/**
* 日记类别列表
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryTypeList(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
Connection con=null;
try{
con=dbUtil.getCon();
List<DiaryType> diaryTypeList=diaryTypeDao.diaryTypeList(con);
boolean imageChange=false;
while(itr.hasNext()){
FileItem item=(FileItem)itr.next();
if(item.isFormField()){
String fieldName=item.getFieldName();
if("nickName".equals(fieldName)){
user.setNickName(item.getString("utf-8"));
}
if("mood".equals(fieldName)){
user.setMood(item.getString("utf-8"));
}
}else if(!"".equals(item.getName())){
try{
imageChange=true;
String imageName=DateUtil.getCurrentDateStr();
user.setImageName(imageName+"."+item.getName().split("\\.")[1]);
String filePath=PropertiesUtil.getValue("imagePath")+imageName+"."+item.getName().split("\\.")[1];
item.write(new File(filePath));
}catch(Exception e){
e.printStackTrace();
}
}
}
if(!imageChange){
user.setImageName(user.getImageName().replaceFirst(PropertiesUtil.getValue("imageFile"), ""));
}
Connection con=null;
try {
con=dbUtil.getCon();
int saveNums=userDao.userUpdate(con, user);
if(saveNums>0){
user.setImageName(PropertiesUtil.getValue("imageFile")+user.getImageName());
session.setAttribute("currentUser", user);
request.getRequestDispatcher("main?all=true").forward(request, response);
}else{
request.setAttribute("currentUser", user);
request.setAttribute("error", "保存失败!");
request.setAttribute("mainPage", "user/userSave.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 日记类别准备保存
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryTypePreSave(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String diaryTypeId=request.getParameter("diaryTypeId");
if(StringUtil.isNotEmpty(diaryTypeId)){
Connection con=null;
try{
con=dbUtil.getCon();
DiaryType diaryType=diaryTypeDao.diaryTypeShow(con,diaryTypeId);
request.setAttribute("diaryType", diaryType);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
request.setAttribute("mainPage", "diaryType/diaryTypeSave.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}
continue;
}
if(i==currentPage){
pageCode.append("<li class='active'><a href='#'>"+i+"</a></li>");
}else{
pageCode.append("<li><a href='main?page="+i+"'>"+i+"</a></li>");
}
}
if(currentPage==totalPage){
pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>");
}else{
pageCode.append("<li><a href='main?page="+(currentPage+1)+"'>下一页</a></li>");
}
pageCode.append("<li><a href='main?page="+totalPage+"'>尾页</a></li>");
return pageCode.toString();
}
}
/**
* 日记类别Servlet类
*
/**
* 日记Servlet类
*
*/
public class DiaryServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
DbUtil dbUtil=new DbUtil(); // 实例化数据库工具类
DiaryDao diaryDao=new DiaryDao(); // 实例化日记类
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String action=request.getParameter("action"); // 获取请求方法
if("show".equals(action)){ // 显示日记
diaryShow(request,response);
}else if("preSave".equals(action)){ // 准备调用日记保存
diaryPreSave(request,response);
}else if("save".equals(action)){ // 调用日记保存
diarySave(request,response);
}else if("delete".equals(action)){ // 调用日记删除
diaryDelete(request,response);
}
}
/**
* 日记显示
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryShow(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String diaryId=request.getParameter("diaryId");
Connection con=null;
try{
con=dbUtil.getCon();
Diary diary=diaryDao.diaryShow(con, diaryId);
request.setAttribute("diary", diary);
request.setAttribute("mainPage", "diary/diaryShow.jsp");
List<DiaryType> diaryTypeList=diaryTypeDao.diaryTypeList(con);
request.setAttribute("diaryTypeList", diaryTypeList);
request.setAttribute("mainPage", "diaryType/diaryTypeList.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 日记类别准备保存
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryTypePreSave(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String diaryTypeId=request.getParameter("diaryTypeId");
if(StringUtil.isNotEmpty(diaryTypeId)){
Connection con=null;
try{
con=dbUtil.getCon();
DiaryType diaryType=diaryTypeDao.diaryTypeShow(con,diaryTypeId);
request.setAttribute("diaryType", diaryType);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 用户登录Servlet类
*
*/
public class LoginServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
DbUtil dbUtil=new DbUtil(); // 实例化数据库工具对象
UserDao userDao=new UserDao(); // 实例化用户DAO对象
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
*/
public class DiaryTypeServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
DbUtil dbUtil=new DbUtil(); // 实例化数据库工具类
DiaryTypeDao diaryTypeDao=new DiaryTypeDao(); // 实例化日记类别类
DiaryDao diaryDao=new DiaryDao(); // 实例化日记类
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String action=request.getParameter("action"); // 获取请求方法
if("list".equals(action)){ // 获取列表
diaryTypeList(request,response);
}else if("preSave".equals(action)){ // 准备日记类别保存
diaryTypePreSave(request,response);
}else if("save".equals(action)){ // 日记类别保存
diaryTypeSave(request,response);
}else if("delete".equals(action)){ // 日记类别删除
diaryTypeDelete(request,response);
}
}
/**
* 日记类别列表
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryTypeList(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
Connection con=null;
try{
con=dbUtil.getCon();
List<DiaryType> diaryTypeList=diaryTypeDao.diaryTypeList(con);
request.setAttribute("diaryTypeList", diaryTypeList);
request.setAttribute("mainPage", "diaryType/diaryTypeList.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}finally{
con=dbUtil.getCon();
int saveNums=userDao.userUpdate(con, user);
if(saveNums>0){
user.setImageName(PropertiesUtil.getValue("imageFile")+user.getImageName());
session.setAttribute("currentUser", user);
request.getRequestDispatcher("main?all=true").forward(request, response);
}else{
request.setAttribute("currentUser", user);
request.setAttribute("error", "保存失败!");
request.setAttribute("mainPage", "user/userSave.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
Diary diary=diaryDao.diaryShow(con, diaryId);
request.setAttribute("diary", diary);
}
request.setAttribute("mainPage", "diary/diarySave.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 日记保存
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diarySave(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String title=request.getParameter("title");
String content=request.getParameter("content");
String typeId=request.getParameter("typeId");
String diaryId=request.getParameter("diaryId");
Diary diary=new Diary(title,content,Integer.parseInt(typeId));
if(StringUtil.isNotEmpty(diaryId)){
diary.setDiaryId(Integer.parseInt(diaryId));
}
Connection con=null;
try {
con=dbUtil.getCon();
int saveNums;
if(StringUtil.isNotEmpty(diaryId)){
saveNums=diaryDao.diaryUpdate(con, diary);
}else{
saveNums=diaryDao.diaryAdd(con, diary);
}
if(saveNums>0){
/**
* 日记类别Servlet类
*
*/
public class DiaryTypeServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
DbUtil dbUtil=new DbUtil(); // 实例化数据库工具类
DiaryTypeDao diaryTypeDao=new DiaryTypeDao(); // 实例化日记类别类
DiaryDao diaryDao=new DiaryDao(); // 实例化日记类
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String action=request.getParameter("action"); // 获取请求方法
if("list".equals(action)){ // 获取列表
diaryTypeList(request,response);
}else if("preSave".equals(action)){ // 准备日记类别保存
diaryTypePreSave(request,response);
}
/**
* 日记保存
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diarySave(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String title=request.getParameter("title");
String content=request.getParameter("content");
String typeId=request.getParameter("typeId");
String diaryId=request.getParameter("diaryId");
Diary diary=new Diary(title,content,Integer.parseInt(typeId));
if(StringUtil.isNotEmpty(diaryId)){
diary.setDiaryId(Integer.parseInt(diaryId));
}
Connection con=null;
try {
con=dbUtil.getCon();
int saveNums;
if(StringUtil.isNotEmpty(diaryId)){
saveNums=diaryDao.diaryUpdate(con, diary);
}else{
saveNums=diaryDao.diaryAdd(con, diary);
}
if(saveNums>0){
request.getRequestDispatcher("main?all=true").forward(request, response);
}else{
request.setAttribute("diary", diary);
request.setAttribute("error", "保存失败");
request.setAttribute("mainPage", "diary/diarySave.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
*/
private String genPagation(int totalNum,int currentPage,int pageSize){
int totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
StringBuffer pageCode=new StringBuffer();
pageCode.append("<li><a href='main?page=1'>首页</a></li>");
if(currentPage==1){
pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>");
}else{
pageCode.append("<li><a href='main?page="+(currentPage-1)+"'>上一页</a></li>");
}
for(int i=currentPage-2;i<=currentPage+2;i++){
if(i<1||i>totalPage){
continue;
}
if(i==currentPage){
pageCode.append("<li class='active'><a href='#'>"+i+"</a></li>");
}else{
pageCode.append("<li><a href='main?page="+i+"'>"+i+"</a></li>");
}
}
if(currentPage==totalPage){
pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>");
}else{
pageCode.append("<li><a href='main?page="+(currentPage+1)+"'>下一页</a></li>");
}
pageCode.append("<li><a href='main?page="+totalPage+"'>尾页</a></li>");
return pageCode.toString();
}
}
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String action=request.getParameter("action"); // 获取请求方法
if("show".equals(action)){ // 显示日记
diaryShow(request,response);
}else if("preSave".equals(action)){ // 准备调用日记保存
diaryPreSave(request,response);
}else if("save".equals(action)){ // 调用日记保存
diarySave(request,response);
}else if("delete".equals(action)){ // 调用日记删除
diaryDelete(request,response);
}
}
/**
* 日记显示
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryShow(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String diaryId=request.getParameter("diaryId");
Connection con=null;
try{
con=dbUtil.getCon();
Diary diary=diaryDao.diaryShow(con, diaryId);
request.setAttribute("diary", diary);
request.setAttribute("mainPage", "diary/diaryShow.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
Diary diary=new Diary(title,content,Integer.parseInt(typeId));
if(StringUtil.isNotEmpty(diaryId)){
diary.setDiaryId(Integer.parseInt(diaryId));
}
Connection con=null;
try {
con=dbUtil.getCon();
int saveNums;
if(StringUtil.isNotEmpty(diaryId)){
saveNums=diaryDao.diaryUpdate(con, diary);
}else{
saveNums=diaryDao.diaryAdd(con, diary);
}
if(saveNums>0){
request.getRequestDispatcher("main?all=true").forward(request, response);
}else{
request.setAttribute("diary", diary);
request.setAttribute("error", "保存失败");
request.setAttribute("mainPage", "diary/diarySave.jsp");
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 日记删除
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void diaryDelete(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
/**
* 保存用户
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void userSave(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
FileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
List<FileItem> items=null;
try {
items=upload.parseRequest((RequestContext) request);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Iterator<FileItem> itr=items.iterator();
HttpSession session=request.getSession();
User user=(User)session.getAttribute("currentUser");
boolean imageChange=false;
while(itr.hasNext()){
FileItem item=(FileItem)itr.next();
if(item.isFormField()){
String fieldName=item.getFieldName();
if("nickName".equals(fieldName)){
user.setNickName(item.getString("utf-8"));
}
if("mood".equals(fieldName)){
user.setMood(item.getString("utf-8"));
}
}else if(!"".equals(item.getName())){
try{
imageChange=true;
String imageName=DateUtil.getCurrentDateStr();
user.setImageName(imageName+"."+item.getName().split("\\.")[1]);
String filePath=PropertiesUtil.getValue("imagePath")+imageName+"."+item.getName().split("\\.")[1];
item.write(new File(filePath));
}catch(Exception e){
e.printStackTrace();
}
}
}
if(!imageChange){
user.setImageName(user.getImageName().replaceFirst(PropertiesUtil.getValue("imageFile"), ""));
}
Connection con=null;
try {