可以用ssm开发javaweb项目吗(SSM框架的个人网上日记)
可以用ssm开发javaweb项目吗(SSM框架的个人网上日记)部分代码展示@Controller @RequestMapping({"/blog"}) public class BlogController { @Resource private BlogService blogService; @Resource private CommentService commentService; private BlogIndex blogIndex = new BlogIndex(); @RequestMapping({"/articles/{id}"}) public ModelAndView details(@PathVariable("id") Integer id HttpServletRequest request) { ModelAndView mav = ne
今天介绍一个基于SSM框架的个人网上日记、博客系统。



Spring
 Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
 SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
 mybatis是对jdbc的封装,它让数据库底层操作变得透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
部分代码展示
@Controller
@RequestMapping({"/blog"})
public class BlogController {
  @Resource private BlogService blogService;
  @Resource private CommentService commentService;
  private BlogIndex blogIndex = new BlogIndex();
  @RequestMapping({"/articles/{id}"})
  public ModelAndView details(@PathVariable("id") Integer id  HttpServletRequest request) {
    ModelAndView mav = new ModelAndView();
    // 根据主键查询博客信息
    Blog blog = blogService.findById(id);
    mav.addObject("blog"  blog);
    // 此时就会看过 然后阅读人数➕1
    blog.setClickHit(blog.getClickHit()   1);
    blogService.update(blog);
    mav.addObject("mainPage"  "foreground/blog/view.jsp");
    mav.addObject("pageTitle"  blog.getTitle()   "_个人博客");
    mav.setViewName("index");
    // 上一篇 下一篇
    mav.addObject(
        "pageCode" 
        genUpAndDownPageCode(
            blogService.getLastBlog(id) 
            blogService.getNextBlog(id) 
            request.getServletContext().getContextPath()));
    Map<String  Object> map = new HashMap<>();
    // 这里的参数对照mapper里面传进去的参数
    map.put("blogId"  blog.getId());
    map.put("state"  1);
    List<Comment> commentList = commentService.list(map);
    mav.addObject("commentList"  commentList);
    // 处理关键字
    String keyWord = blog.getKeyWord();
    if (StringUtil.isEmpty(keyWord)) {
      mav.addObject("keyWords"  null);
    } else {
      String[] arr = keyWord.split(" ");
      mav.addObject("keyWords"  StringUtil.filterWhite(Arrays.asList(arr)));
    }
    mav.setViewName("index");
    return mav;
  }
  /** 上一篇 下一篇 */
  private String genUpAndDownPageCode(Blog lastBlog  Blog nextBlog  String projectContext) {
    StringBuffer pageCode = new StringBuffer();
    if (lastBlog == null || lastBlog.getId() == null) {
      pageCode.append("<p>上一篇:没有了</p>");
    } else {
      pageCode.append(
          "<p>上一篇:<a href='"
                projectContext
                "/blog/articles/"
                lastBlog.getId()
                ".html'>"
                lastBlog.getTitle()
                "</a></p>");
    }
    if (nextBlog == null || nextBlog.getId() == null) {
      pageCode.append("<p>下一篇:没有了</p>");
    } else {
      pageCode.append(
          "<p>下一篇:<a href='"
                projectContext
                "/blog/articles/"
                nextBlog.getId()
                ".html'>"
                nextBlog.getTitle()
                "</a></p>");
    }
    return pageCode.toString();
  }
  /** 根据关键字查询 */
  @RequestMapping({"/q"})
  public ModelAndView q(
      @RequestParam(value = "q"  required = false) String q 
      @RequestParam(value = "page"  required = false) String page 
      HttpServletRequest request)
      throws Exception {
    if (StringUtil.isEmpty(page)) {
      page = "1";
    }
    ModelAndView mav = new ModelAndView();
    mav.addObject("mainPage"  "foreground/blog/result.jsp");
    // 在lucene中查询
    List<Blog> blogList = blogIndex.searchBlog(q.trim());
    int toIndex = 0;
    if (blogList.size() >= Integer.parseInt(page) * 10) {
      toIndex = Integer.parseInt(page) * 10;
    } else {
      toIndex = blogList.size();
    }
    mav.addObject("blogList"  blogList.subList((Integer.parseInt(page) - 1) * 10  toIndex));
    mav.addObject("q"  q);
    mav.addObject("resultTotal"  blogList.size());
    mav.addObject("pageTitle"  "搜索关键字'"   q   "'结果页面_个人博客");
    mav.setViewName("index");
    return mav;
  }
  /** 查询结果的翻页功能 */
  private String genUpAndDownPageCode(
      int page  int totalNum  String q  int pageSize  String projectContext) {
    StringBuffer pageCode = new StringBuffer();
    // 总共页数
    int totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize   1;
    if (totalPage == 0) {
      return "";
    }
    pageCode.append("<nav>");
    pageCode.append("<ur class='pager' >");
    if (page > 1) { // 如果当前页大于1
      pageCode.append(
          "<li><a href='"
                projectContext
                "/blog/q.html?page="
                (page - 1)
                "&q="
                q
                "'>上一页</a></li>");
    } else { // 如果当前页是第一页
      pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>");
    }
    if (page < totalPage) { // 不是最后一页
      pageCode.append(
          "<li><a href='"
                projectContext
                "/blog/q.html?page="
                (page   1)
                "&q="
                q
                "'>下一页</a></li>");
    } else {
      pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>");
    }
    pageCode.append("</ur>");
    pageCode.append("</nav>");
    return pageCode.toString();
  }
}
    
获取源码请关注后私信“20220708”




