自动秒收录

spring是什么意思 (SpringMVC之前端增删改查实现)


文章编号:1210 / 更新时间:2023-11-10 00:50:03 / 浏览:
存储

SpringMVC是一个基于MVC架构的框架,它可以帮助我们实现前后端的分离,同时也能很好地支持前端的增删改查操作。

配置

Cloudjun

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">
    CloudJun 1.1 core library
    CloudJun core
    1.1
    CloudJun
    http://jsp.veryedu.cn
    
        page
        com.CloudJun.tag.PageTag
        JSP
        
            pageBean
            true
            true
        
    
web.xml

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  Archetype Created Web Application
  
    contextConfigLocation
    classpath:spring-context.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    true
    
      encoding
      UTF-8
    
  
  
    encodingFilter
    /*
  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath:spring-mvc.xml
    
    1
    true
  
  
    SpringMVC
    /
  
zhang.tld

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  Archetype Created Web Application
  
    contextConfigLocation
    classpath:spring-context.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    true
    
      encoding
      UTF-8
    
  
  
    encodingFilter
    /*
  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath:spring-mvc.xml
    
    1
    true
  
  
    SpringMVC
    /
  
generatorConfig.xml

                        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >




  
    
     
  
                    connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
  
    
  
                        targetProject="src/main/java">
    
    
    
    
  
                     targetProject="src/main/java">
    
  
                         targetProject="src/main/java" type="XMLMAPPER">
    
  
           enableCountByExample="false" enableDeleteByExample="false"
         enableSelectByExample="false" enableUpdateByExample="false">
  

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

log4j2.xml



  
    /root/workspace/lucenedemo/logs
    /root/workspace/lucenedemo/logs/error
    /root/workspace/lucenedemo/logs/warn
    %d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n
  
  
    
              onMismatch="DENY" />
      
    
    
              pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    
          filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
              onMismatch="DENY" />
              pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
      
                  modulate="true" />
      
    
          filePattern="${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
              onMismatch="DENY" />
              pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
      
        
        
      
      
    
          filePattern="${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log">
              onMismatch="DENY" />
              pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
      
                  modulate="true" />
      
    
  
  
    
    
    
    
    
    
    
    
      
      
      
      
    
  

spring-context.xml


       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    

spring-mvc.xml


       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    
    
                          value="org.springframework.web.servlet.view.JstlView">
        
        
    
    

spring-mybatis.xml


       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    
    
    
              destroy-method="close">
        
        
        
        
        
        
        
        
        
    
    
        
        
        
        
            
                
                    
                        
                            helperDialect=mysql
                        
                    
                
            
        
    
    
        
        
    
    
        
    
    
    

StudentBizImpl

package com.zhanghao.Biz.Impl;
import com.zhanghao.Biz.StudentBiz;
import com.zhanghao.mapper.StudentMapper;
import com.zhanghao.model.Student;
import com.zhanghao.utils.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
 * @author zhanghao
 * @site
 * @company s集团
 * @create 2023-09-08 23:12
@Service
public class StudentBizImpl implements StudentBiz {
    @Autowired
    private StudentMapper studentMapper;
    @Override
    public int deleteByPrimaryKey(String sid) {
        return studentMapper.deleteByPrimaryKey(sid);
    @Override
    public int insert(Student record) {
        return studentMapper.insert(record);
    @Override
    public int insertSelective(Student record) {
        return studentMapper.insertSelective(record);
    @Override
    public Student selectByPrimaryKey(String sid) {
        return studentMapper.selectByPrimaryKey(sid);
    @Override
    public int updateByPrimaryKeySelective(Student record) {
        return studentMapper.updateByPrimaryKeySelective(record);
    @Override
    public int updateByPrimaryKey(Student record) {
        return studentMapper.updateByPrimaryKey(record);
    @Override
    public List selBySnamePager(Student student, PageBean pageBean) {
        return studentMapper.selBySnamePager(student);

PagerAspect

package com.zhanghao.aspect;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhanghao.utils.PageBean;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import java.util.List;
 * @author zhanghao
 * @site
 * @company s集团
 * @create 2023-08-25 17:01
@Aspect
@Component
public class PagerAspect {
    @Around("execution(* *..*Biz.*Pager(..))")
    public Object invoke(ProceedingJoinPoint args) throws Throwable {
        PageBean pageBean = null;
        //获取目标中的所有方法
        Object[] args1 = args.getArgs();
        for (Object o : args1) {
            if (o instanceof PageBean) {
                pageBean = (PageBean) o;
                break;
        if (pageBean != null && pageBean.isPagination()) {
            PageHelper.startPage(pageBean.getPage(), pageBean.getRows());
        Object proceed = args.proceed();
        if (pageBean != null && pageBean.isPagination()) {
            PageInfo pageInfo = new PageInfo((List) proceed);
            pageBean.setTotal((int) pageInfo.getTotal());
        return proceed;

PageTag

package com.zhanghao.tag;
import com.zhanghao.utils.PageBean;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class PageTag extends BodyTagSupport{
  private PageBean pageBean;// 包含了所有分页相关的元素
  public PageBean getPageBean() {
    return pageBean;
  public void setPageBean(PageBean pageBean) {
    this.pageBean = pageBean;
  @Override
  public int doStartTag() throws JspException {
//    没有标签体,要输出内容
    JspWriter out = pageContext.getOut();
    try {
      out.print(toHTML());
    } catch (IOException e) {
      e.printStackTrace();
    return super.doStartTag();
  private String toHTML() {
    StringBuffer sb = new StringBuffer();
//    隐藏的form表单---这个就是上一次请求下次重新发的奥义所在
//    上一次请求的URL
    sb.append("
"); sb.append(" "); // 上一次请求的参数 Map paramMap = pageBean.getMap(); if(paramMap != null && paramMap.size() > 0) { Set> entrySet = paramMap.entrySet(); for (Entry entry : entrySet) { // 参数名 String key = entry.getKey(); // 参数值 for (String value : entry.getValue()) { // 上一次请求的参数,再一次组装成了新的Form表单 // 注意:page参数每次都会提交,我们需要避免 if(!"page".equals(key)) { sb.append(" "); sb.append("");
// 分页条 sb.append("
    "); sb.append(" sb.append(" href='javascript:gotoPage(1)'>首页"); sb.append(" sb.append(" href='javascript:gotoPage("+pageBean.getPreivousPage()+")'><");// less than 小于号 // sb.append("
  • 1
  • ");
    // sb.append("
  • 2
  • ");
    sb.append("
  • "+pageBean.getPage()+"
  • ");
    sb.append(" >"); sb.append(" 尾页"); sb.append("
  • 到第 sb.append(" type='text' />
  • ");
    sb.append("
  • sb.append(" href='javascript:skipPage()'>确定
  • ");
    sb.append("
  • 共"+pageBean.getTotal()+"条
  • ");
    sb.append("
");
// 分页执行的JS代码 sb.append(""); return sb.toString();

实现功能

StudentController

package com.zhanghao.web;
import com.zhanghao.Biz.StudentBiz;
import com.zhanghao.model.Student;
import com.zhanghao.utils.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
 * @author zhanghao
 * @site
 * @company s集团
 * @create 2023-09-08 21:52
@Controller
@RequestMapping("/student")
public class StudentController {
    @Autowired
    private StudentBiz studentBiz;
    @RequestMapping("/list")
    public String list(Student student, HttpServletRequest request){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(request);
        List students = studentBiz.selBySnamePager(student, pageBean);
        request.setAttribute("list",students);
        request.setAttribute("pageBean",pageBean);
        return "stu/list";
    @RequestMapping("/add")
    public String add(Student student){
        studentBiz.insertSelective(student);
        return "redirect:list";
    @RequestMapping("/del/{sid}")
    public String add(@PathVariable("sid") String sid){
        studentBiz.deleteByPrimaryKey(sid);
        return "redirect:/student/list";
    @RequestMapping("/edit")
    public String edit(Student student){
        studentBiz.updateByPrimaryKeySelective(student);
        return "redirect:list";
    @RequestMapping("/pareSave")
    public String pareSave(Student student, Model model){
        if(student!=null && student.getSid()!=null){
            Student s = studentBiz.selectByPrimaryKey(student.getSid());
            model.addAttribute("s",s);
        return "stu/edit";

JSP

List.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>



<%@ include file="/common/header.jsp" %>


action="/student/list" method="post">
placeholder="请输入学生名称"> <%-- --%>
新增
学生编号 学生名称 学生年龄 学生性别 操作
${s.sid } ${s.sname } ${s.sage } ${s.ssex } 修改 删除
${pageBean}

edit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>



    
    


学生编号:
学生姓名:
学生年龄:
学生性别:

heard.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsp.veryedu.cn" prefix="z"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



    
                href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css"
            rel="stylesheet">
    
    

前端增删改查实现一般需要完成以下几个步骤:

  1. 前端页面设计。前端页面应该清晰明了,使用户易于理解和使用。需要定义表格用于展示数据,包括表头和表内容,同时还需要添加各种操作按钮用于增加、修改和删除数据。
  2. 接口设计。接口是前后端之间的桥梁,要实现增删改查功能,需要定义对应的增删改查接口。接口应该具有明确的功能和参数,以便前端能够正确调用。
  3. 数据库设计。数据库是存储数据的重要组成部分。需要定义对应的数据表,包括数据列、数据类型和主键等,以便后台能够存储数据并进行操作。
  4. 前端逻辑实现。前端需要编写对应的JavaScript代码来实现增删改查功能。具体包括:对表格进行初始化、监听操作按钮点击事件、调用后台接口进行数据操作等。
  5. 后台接口实现。后台接口需要根据前端定义的接口进行实现。一般需要包括对应的增删改查方法,以便能够正确处理前端传递的参数和数据。
  6. 后台逻辑实现。后台需要根据前端传递的参数和数据,进行相应的处理,包括数据的存储和修改、数据的查询和删除等。同时,还需要对数据进行校验和验证,保证数据的正确性和安全性。

综上所述,前端增删改查实现需要前后端配合完成,同时还需要遵循一定的规范和标准,才能够实现功能完善、性能优良的系统。


相关标签: 数据库JavaJavaScript存储前端开发

本文地址:https://www.0558.la/article/50a6530e83ea45febde6.html

上一篇:archlinuxArchLinux近期更新依赖问题解决...
下一篇:新注册的域名多久可以备案新注册的域名要如...

温馨提示

做上本站友情链接,在您站上点击一次,即可自动收录并自动排在本站第一位!
<a href="https://www.0558.la/" target="_blank">自动秒收录</a>