酌零吧 关注:5贴子:176
1.项目总览






IP属地:广东1楼2021-12-22 20:02回复
    1.设置pojo包-Books类
    =====================
    package com.ming.pojo;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Books {
    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;
    }
    =============User.java
    package com.ming.pojo;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
    private int id;
    private String username;
    private String password;
    }


    IP属地:广东2楼2021-12-22 20:05
    收起回复
      2026-03-12 22:52:00
      广告
      不感兴趣
      开通SVIP免广告
      2.dao包,dao包下有interface的BooksMapper和BooksMapper.xml
      ===================BooksMapper.java
      package com.ming.dao;
      import com.ming.pojo.Books;
      import org.apache.ibatis.annotations.Param;
      import java.util.List;
      public interface BooksMapper {
      List<Books> getBooksList();
      // List<Books> getid();
      // int add(@Param("bookid")int id);
      int deleteBooks(@Param("bookID") int id);
      int addBooks(Books book);
      Books getBooksByid(@Param("bookID") int id);
      int updateBooks(Books book);
      List<Books> getBooksListLike(@Param("values") String bookName);
      }
      ==========================BooksMapper.xml
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.ming.dao.BooksMapper">
      <select id="getBooksList" resultType="Books">
      select * from ssmbuild.books
      </select>
      <delete id="deleteBooks">
      delete from books where bookID=#{bookID}
      </delete>
      <insert id="addBooks" parameterType="Books">
      insert into books(bookName, bookCounts, detail) values(#{bookName},#{bookCounts},#{detail})
      </insert>
      <select id="getBooksByid" resultType="Books">
      select * from books where bookID=#{bookID}
      </select>
      <update id="updateBooks" parameterType="Books">
      update books set bookID=#{bookID},bookName=#{bookName},bookCounts=#{bookCounts},detail=#{detail} where bookID=#{bookID}
      </update>
      <select id="getBooksListLike" resultType="Books">
      select * from books where bookName like "%"#{values}"%"
      </select>
      </mapper>
      ===========================
      dao,service:都是一个接口+一个实现类(.xml或者impl.java)
      1.mapper定义接口的方法:
      int deleteBooks(@Param("bookID") int id);
      void 方法名字(@Param("数据库里的属性") ,临时参数);
      2.xml定义接口的方法的内容:
      <mapper namespace="com.ming.dao.BooksMapper">
      <select id="getBooksByid" resultType="Books">
      select * from books where bookID=#{bookID}
      </select>
      </mapper>
      <mapper namespace="com.改.dao.该Mapper的名字">
      <select id="对应mapper里的方法的方法名" resultType="Books(实体类名?)">
      select * from books where 数据库里的属性=#{数据库里的属性}
      </select>
      </mapper>


      IP属地:广东3楼2021-12-22 20:09
      回复
        2.service里BooksService.java和BooksServiceImpl.java
        =================BooksService.java
        package com.ming.service;
        import com.ming.pojo.Books;
        import org.apache.ibatis.annotations.Param;
        import java.util.List;
        public interface BooksService {
        List<Books> getBooksList();
        int deleteBooks(@Param("bookID") int id);
        int addBooks(Books book);
        Books getBooksByid(@Param("bookID") int id);
        int updateBooks(Books book);
        List<Books> getBooksListLike(@Param("values") String bookName);
        }
        ===================BooksServiceImpl.java
        package com.ming.service;
        import com.ming.dao.BooksMapper;
        import com.ming.pojo.Books;
        import java.util.List;
        public class BooksServiceImpl implements BooksService{
        private BooksMapper booksMapper;
        public void setBooksMapper(BooksMapper booksMapper) {
        this.booksMapper = booksMapper;
        }
        @Override
        public List<Books> getBooksList() {
        return booksMapper.getBooksList();
        }
        @Override
        public int deleteBooks(int id) {
        return booksMapper.deleteBooks(id);
        }
        @Override
        public int addBooks(Books book) {
        return booksMapper.addBooks(book);
        }
        @Override
        public Books getBooksByid(int id) {
        return booksMapper.getBooksByid(id);
        }
        @Override
        public int updateBooks(Books book) {
        return booksMapper.updateBooks(book);
        }
        @Override
        public List<Books> getBooksListLike(String bookName) {
        return booksMapper.getBooksListLike(bookName);
        }
        }
        =========================
        3.BooksService层:抄mapper
        4.BooksServiceImpl:
        4.1:把mapper接口(类)弄过来在这个页面定义一下。private BooksMapper booksMapper;
        4.2:public void setBooksMapper(BooksMapper booksMapper) {
        this.booksMapper = booksMapper;
        }
        4.2:@Override
        public int deleteBooks(int id) {
        return booksMapper.deleteBooks(id);
        }
        mapper与service里:
        int deleteBooks(@Param("bookID") int id);
        impl:(实现service的方式是returnmapper里方法)
        加public int deleteBooks(int id){
        return Mapper名字.mapper里这个方法的名字();
        }


        IP属地:广东4楼2021-12-22 20:12
        回复
          3.controller下的UserController
          =====================
          package com.ming.controller;
          import com.github.pagehelper.PageHelper;
          import com.github.pagehelper.PageInfo;
          import com.ming.pojo.Books;
          import com.ming.service.BooksServiceImpl;
          import com.ming.service.UserServiceImpl;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.beans.factory.annotation.Qualifier;
          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 org.springframework.web.bind.annotation.RequestParam;
          import javax.servlet.http.HttpSession;
          import java.util.List;
          @Controller
          public class UserController {
          @Autowired
          @Qualifier("UserServiceImpl")
          private UserServiceImpl userService;
          @Autowired
          @Qualifier("BooksServiceImpl")
          private BooksServiceImpl booksService;
          @RequestMapping("/books/{pn}")
          public String tobooks(Model model,@PathVariable("pn") int pn){
          PageHelper.startPage(pn,4);
          List<Books> booksList=booksService.getBooksList();
          PageInfo<Books> pageInfo=new PageInfo<>(booksList);
          model.addAttribute("page",pageInfo);
          return "books";
          }
          @RequestMapping("/tologin")
          public String tologin()
          {
          return "login";
          }
          @RequestMapping("/login")
          public String login(String username, String password, Model model, HttpSession session,@RequestParam(value = "pn",defaultValue = "1") int pn)
          {
          if(username.equals("ming") && password.equals("123456"))
          {
          session.setAttribute("username",username);
          PageHelper.startPage(pn,4);
          List<Books> booksList=booksService.getBooksList();
          PageInfo<Books> pageInfo=new PageInfo<>(booksList);
          model.addAttribute("page",pageInfo);
          model.addAttribute("username",username);
          return "books";
          }
          else
          {
          String msg="你的账户有大问题";
          model.addAttribute("msg",msg);
          return "login";
          }
          }
          @RequestMapping("/delete/{bookID}")
          public String delete(@PathVariable("bookID") int id)
          {
          booksService.deleteBooks(id);
          return "redirect:/books/1";
          }
          @RequestMapping("/toadd")
          public String add()
          {
          return "addbooks";
          }
          @RequestMapping("/add")
          public String add1(Books book)
          {
          booksService.addBooks(book);
          return "redirect:/books/1";
          }
          @RequestMapping("/toupdate/{bookID}")
          public String update(Model model,@PathVariable("bookID") int id)
          {
          Books book = booksService.getBooksByid(id);
          model.addAttribute("book",book);
          return "updatebooks";
          }
          @RequestMapping("/update")
          public String update1(Books book)
          {
          booksService.updateBooks(book);
          return "redirect:/books/1";
          }
          @RequestMapping("/select/{pn}")
          public String select(String bookName,Model model,@PathVariable("pn") int pn)
          {
          PageHelper.startPage(pn,4);
          List<Books> booksListLike = booksService.getBooksListLike(bookName);
          PageInfo<Books> pageInfo=new PageInfo<>(booksListLike);
          model.addAttribute("page",pageInfo);
          return "books";
          }
          @RequestMapping("/unlogin")
          public String unlogin(HttpSession session)
          {
          session.invalidate();
          return "login";
          }
          }
          ==================
          6.controller
          6.1:载入service
          @Autowired
          @Qualifier("BooksServiceImpl")
          private BooksServiceImpl booksService;
          6.2:有/是代表方法,没/是代表jsp
          @RequestMapping("/tologin")
          public String tologin()
          {
          return "login";
          }
          @RequestMapping("/这个方法的名字")
          public String tologin()
          {
          return "jsp名字";
          }
          6.3调用的方法需要传参数:
          改查,其中 改 要几个属性所以要表单调用方法。要表单就要跳转有表单的页面。先a /toupdata再在 /toupdata调用updata方法
          @RequestMapping("/toupdate/{bookID}")//最终调用的改的方法要用到bookid,所以从jsp获取bookid
          public String update(Model model,@PathVariable("bookID") int id)//临时参数id对应数据库属性bookID
          {
          Books book = booksService.getBooksByid(id);
          model.addAttribute("book",book);//jsp里临时book类里。不对,哪儿有?
          return "updatebooks";
          }
          @RequestMapping("/update")
          public String update1(Books book)//临时book类传进来
          {
          booksService.updateBooks(book);//真正调用修改方法
          return "redirect:/books/1";
          }
          7.模糊查找的东西太多,要分页装。
          @RequestMapping("/select/{pn}")
          public String select(String bookName,Model model,@PathVariable("pn") int pn)
          {
          PageHelper.startPage(pn,4);//
          List<Books> booksListLike = booksService.getBooksListLike(bookName);//把查询结果定义,名字叫booksListLike
          PageInfo<Books类名> pageInfo=new PageInfo<>(booksListLike);//把booksListLike 转成 PageInfo类型
          model.addAttribute("page",pageInfo);//pageInfo加进去,叫page
          return "books";//回到books.jsp
          }


          IP属地:广东5楼2021-12-22 20:14
          回复
            4,interceptor下的LoginInterceptor.java
            =========================
            package com.ming.interceptor;
            import org.springframework.web.servlet.HandlerInterceptor;
            import org.springframework.web.servlet.ModelAndView;
            import javax.servlet.http.HttpServletRequest;
            import javax.servlet.http.HttpServletResponse;
            import javax.servlet.http.HttpSession;
            public class LoginInterceptor implements HandlerInterceptor {
            @Override
            public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
            // TODO Auto-generated method stub
            }
            @Override
            public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
            // TODO Auto-generated method stub
            }
            @Override
            public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
            HttpSession session = arg0.getSession();
            //String uri = request.getRequestURI(); // 获取登录的uri,这个是不进行拦截的
            //if(session.getAttribute("LOGIN_USER")!=null || uri.indexOf("system/login")!=-1) {// 说明登录成功 或者 执行登录功能
            if(session.getAttribute("username")!=null) {
            // 登录成功不拦截
            return true;
            }else {
            // 拦截后进入登录页面
            arg1.sendRedirect(arg0.getContextPath()+"/tologin");
            return false;
            }
            }
            }


            IP属地:广东6楼2021-12-22 20:15
            回复
              拦截器补充
              拦截器:
              拦截后跳转。拦截成功or 失败。改跳转路径


              IP属地:广东7楼2021-12-22 20:15
              回复
                二、资源配置
                1.pom.xml
                ==================依赖
                <dependencies>
                <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
                </dependency>
                <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.26</version>
                </dependency>
                <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.5</version>
                </dependency>
                <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                </dependency>
                <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.7</version>
                </dependency>
                <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.6</version>
                </dependency>
                <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.3.10</version>
                </dependency>
                <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.3.10</version>
                </dependency>
                <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.3.10</version>
                </dependency>
                <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.7</version>
                </dependency>
                <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
                </dependency>
                <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf</artifactId>
                <version>3.0.12.RELEASE</version>
                </dependency>
                <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring5 -->
                <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf-spring5</artifactId>
                <version>3.0.12.RELEASE</version>
                </dependency>
                <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                </dependency>
                <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.2</version>
                </dependency>
                <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
                </dependency>
                <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>5.1.4</version>
                </dependency>
                </dependencies>
                ============================过滤
                <build>
                <resources>
                <resource>
                <directory>src/main/java</directory>
                <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
                </resource>
                <resource>
                <directory>src/main/resources</directory>
                <includes>
                <include>**/*.*</include>
                </includes>
                <filtering>false</filtering>
                </resource>
                </resources>
                </build>
                ======================================
                2.mybatis-config.xml
                ----------------------
                记得改ming为xixi
                ----------------------
                <?xml version="1.0" encoding="UTF-8" ?>
                <!DOCTYPE configuration
                PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
                "http://mybatis.org/dtd/mybatis-3-config.dtd">
                <configuration>
                <typeAliases>
                <package name="com.ming.pojo"/>
                </typeAliases>
                </configuration>
                ========================================
                3.database.properties
                -------------------------------
                数据库的连接,可以改一下密码
                -------------------------------
                jdbc.driver=com.mysql.jdbc.Driver
                jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=false&useUnicode=true&characterEncoding=utf8
                jdbc.username=root
                jdbc.password=12345
                ========================================
                3.applicationContext.xml
                -------------------------------
                导入sping-dao,service,controller的3个配置xml
                -------------------------------
                <?xml version="1.0" encoding="UTF-8"?>
                <beans xmlns="http://www.springframework.org/schema/beans"
                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.xsd
                http://www.springframework.org/schema/aop
                http://www.springframework.org/schema/aop/spring-aop.xsd
                http://www.springframework.org/schema/mvc
                http://www.springframework.org/schema/mvc/spring-mvc.xsd">
                <import resource="classpath:spring-dao.xml"/>
                <import resource="classpath:spring-service.xml"/>
                <import resource="classpath:springmvc-controller.xml"/>
                </beans>


                IP属地:广东8楼2021-12-22 20:29
                回复
                  2026-03-12 22:46:00
                  广告
                  不感兴趣
                  开通SVIP免广告
                  ========================================
                  4.spring-dao.xml
                  -------------------------------
                  数据库连接池,可以改数据库密码,最后一行的ming一定要改
                  -------------------------------
                  <?xml version="1.0" encoding="UTF-8"?>
                  <beans xmlns="http://www.springframework.org/schema/beans"
                  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.xsd
                  http://www.springframework.org/schema/aop
                  http://www.springframework.org/schema/aop/spring-aop.xsd
                  http://www.springframework.org/schema/mvc
                  http://www.springframework.org/schema/mvc/spring-mvc.xsd">
                  <!-- 1.关联数据库文件 -->
                  <context:property-placeholder location="classpath:database.properties"/>
                  <!-- 2.数据库连接池 -->
                  <!--数据库连接池
                  dbcp 半自动化操作 不能自动连接
                  c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)
                  -->
                  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                  <!-- 配置连接池属性 -->
                  <property name="driverClass" value="${jdbc.driver}"/>
                  <property name="jdbcUrl" value="${jdbc.url}"/>
                  <property name="user" value="${jdbc.username}"/>
                  <property name="password" value="${jdbc.password}"/>
                  </bean>
                  <!-- 3.配置SqlSessionFactory对象 -->
                  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
                  <property name="dataSource" ref="dataSource"/>
                  <!-- 绑定配置MyBaties全局配置文件:mybatis-config.xml -->
                  <property name="configLocation" value="classpath:mybatis-config.xml"/><!-- -->
                  <property name="plugins">
                  <array>
                  <bean class="com.github.pagehelper.PageInterceptor">
                  <property name="properties">
                  <value>
                  <!--配置PageHelper-->
                  offsetAsPageNum=true
                  reasonable=true
                  rowBoundsWithCount=true
                  pageSizeZero=true
                  </value>
                  </property>
                  </bean>
                  </array>
                  </property>
                  </bean>
                  <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->
                  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
                  <property name="basePackage" value="com.ming.dao"/>
                  </bean>
                  </beans>


                  IP属地:广东9楼2021-12-22 20:33
                  回复
                    ========================================
                    5.spring-service.xml
                    -------------------------------
                    注册service包(改ming),bean里注册impl和Transcation,mvc里注册interceptors
                    -------------------------------
                    <?xml version="1.0" encoding="UTF-8"?>
                    <beans xmlns="http://www.springframework.org/schema/beans"
                    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.xsd
                    http://www.springframework.org/schema/aop
                    http://www.springframework.org/schema/aop/spring-aop.xsd
                    http://www.springframework.org/schema/mvc
                    http://www.springframework.org/schema/mvc/spring-mvc.xsd">
                    <context:component-scan base-package="com.ming.service"/>
                    <bean id="UserServiceImpl" class="com.ming.service.UserServiceImpl">
                    <property name="userMapper" ref="userMapper"/>
                    </bean>
                    <bean id="BooksServiceImpl" class="com.ming.service.BooksServiceImpl">
                    <property name="booksMapper" ref="booksMapper"/>
                    </bean>
                    <bean id="Transcation" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                    <property name="dataSource" ref="dataSource"/>
                    </bean>
                    <mvc:interceptors>
                    <mvc:interceptor>
                    <mvc:mapping path="/**"/>
                    <mvc:exclude-mapping path="/tologin"/>
                    <mvc:exclude-mapping path="/login"/>
                    <bean class="com.ming.interceptor.LoginInterceptor"/>
                    </mvc:interceptor>
                    </mvc:interceptors>
                    </beans>
                    ========================================
                    6.springmvc-controller.xml
                    -------------------------------
                    注册web/jsp路径,记得改最后的
                    -------------------------------
                    <?xml version="1.0" encoding="UTF-8"?>
                    <beans xmlns="http://www.springframework.org/schema/beans"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns:context="http://www.springframework.org/schema/context"
                    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.xsd
                    http://www.springframework.org/schema/mvc
                    https://www.springframework.org/schema/mvc/spring-mvc.xsd">
                    <!-- 配置SpringMVC -->
                    <!-- 1.开启SpringMVC注解驱动 -->
                    <mvc:annotation-driven />
                    <!-- 2.静态资源默认servlet配置-->
                    <mvc:default-servlet-handler/>
                    <!-- 3.配置jsp 显示ViewResolver视图解析器 -->
                    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
                    <property name="prefix" value="/WEB-INF/jsp/" />
                    <property name="suffix" value=".jsp" />
                    </bean>
                    <!-- 4.扫描web相关的bean -->
                    <context:component-scan base-package="com.ming.controller" />
                    </beans>


                    IP属地:广东10楼2021-12-22 20:34
                    回复
                      笔记以便理解:
                      ===============================
                      dao,service:都是一个接口+一个实现类(.xml或者impl.java)
                      1.mapper定义接口的方法:
                      int deleteBooks(@Param("bookID") int id);
                      void 方法名字(@Param("数据库里的属性") ,临时参数);
                      2.xml定义接口的方法的内容:
                      <mapper namespace="com.ming.dao.BooksMapper">
                      <select id="getBooksByid" resultType="Books">
                      select * from books where bookID=#{bookID}
                      </select>
                      </mapper>
                      <mapper namespace="com.改.dao.该Mapper的名字">
                      <select id="对应mapper里的方法的方法名" resultType="Books(实体类名?)">
                      select * from books where 数据库里的属性=#{数据库里的属性}
                      </select>
                      </mapper>
                      3.BooksService层:抄mapper
                      4.BooksServiceImpl:
                      4.1:把mapper接口(类)弄过来在这个页面定义一下。private BooksMapper booksMapper;
                      4.2:public void setBooksMapper(BooksMapper booksMapper) {
                      this.booksMapper = booksMapper;
                      }
                      4.2:@Override
                      public int deleteBooks(int id) {
                      return booksMapper.deleteBooks(id);
                      }
                      mapper与service里:
                      int deleteBooks(@Param("bookID") int id);
                      impl:(实现service的方式是returnmapper里方法)
                      加public int deleteBooks(int id){
                      return Mapper名字.mapper里这个方法的名字();
                      }
                      5.jsp
                      表单跳转
                      <form action="${pageContext.request.contextPath}/login">
                      点击跳转
                      <a href="${pageContext.request.contextPath}/unlogin">注销</a>
                      分页
                      <a href="/books/${page.getNavigateFirstPage()}">首页</a>
                      6.controller
                      6.1:载入service
                      @Autowired
                      @Qualifier("BooksServiceImpl")
                      private BooksServiceImpl booksService;
                      6.2:有/是代表方法,没/是代表jsp
                      @RequestMapping("/tologin")
                      public String tologin()
                      {
                      return "login";
                      }
                      @RequestMapping("/这个方法的名字")
                      public String tologin()
                      {
                      return "jsp名字";
                      }
                      6.3调用的方法需要传参数:
                      改查,其中 改 要几个属性所以要表单调用方法。要表单就要跳转有表单的页面。先a /toupdata再在 /toupdata调用updata方法
                      @RequestMapping("/toupdate/{bookID}")//最终调用的改的方法要用到bookid,所以从jsp获取bookid
                      public String update(Model model,@PathVariable("bookID") int id)//临时参数id对应数据库属性bookID
                      {
                      Books book = booksService.getBooksByid(id);
                      model.addAttribute("book",book);//jsp里临时book类里。不对,哪儿有?
                      return "updatebooks";
                      }
                      @RequestMapping("/update")
                      public String update1(Books book)//临时book类传进来
                      {
                      booksService.updateBooks(book);//真正调用修改方法
                      return "redirect:/books/1";
                      }
                      7.模糊查找的东西太多,要分页装。
                      @RequestMapping("/select/{pn}")
                      public String select(String bookName,Model model,@PathVariable("pn") int pn)
                      {
                      PageHelper.startPage(pn,4);//
                      List<Books> booksListLike = booksService.getBooksListLike(bookName);//把查询结果定义,名字叫booksListLike
                      PageInfo<Books类名> pageInfo=new PageInfo<>(booksListLike);//把booksListLike 转成 PageInfo类型
                      model.addAttribute("page",pageInfo);//pageInfo加进去,叫page
                      return "books";//回到books.jsp
                      }
                      8.拦截器
                      拦截后跳转。拦截成功or 失败。改跳转路径
                      9.appli里是导入spring三个xml的
                      mybatis.xml 是注册实体类
                      db.p数据库关于数据库的配置,例如改密码
                      springdao里是数据库的驱动,用了数据池,配置数据池的地方可以改数据库配置例如密码。下面bean里扫描dao接口包,一定改dao的路径名。
                      spring service:1.context里注册service路径,2.bean里注册impl和一个transcation不知道是啥。3.mvc了拦截器
                      控制器,自己改改


                      IP属地:广东11楼2021-12-22 20:36
                      回复
                        jsp包
                        ========================================
                        1.index.jsp
                        ------------------------------
                        这个在web下,web-inf外面。别的都在web-inf下,在web-inf下的会被隐藏,用户不能直接看到
                        -------------------------------
                        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
                        <html>
                        <head>
                        <title>$Title$</title>
                        </head>
                        <body>
                        <a href="${pageContext.request.contextPath}/tologin">跳转到登录</a>
                        </body>
                        </html>
                        ========================================
                        2.addbooks.jsp
                        ------------------------------
                        在web-inf下
                        -------------------------------
                        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
                        <html>
                        <head>
                        <title>添加图书</title>
                        </head>
                        <body>
                        <form action="${pageContext.request.contextPath}/add">
                        图书名称:<input type="text" name="bookName"><br>
                        图书数量:<input type="text" name="bookCounts"><br>
                        图书细节:<input type="text" name="detail"><br>
                        <button type="submit">增加</button>
                        </form>
                        </body>
                        </html>
                        ========================================
                        3.books.jsp
                        ------------------------------
                        在web-inf下,含有分页
                        -------------------------------
                        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
                        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
                        <html>
                        <head>
                        <title>Title</title>
                        </head>
                        <body>
                        <span>现在登录的用户是</span>
                        <span>${username}</span>
                        <a href="${pageContext.request.contextPath}/unlogin">注销</a>
                        <form action="${pageContext.request.contextPath}/select/1">
                        <input type="text" name="bookName" placeholder="请输入要查找的商品">
                        <button type="submit">搜索</button>
                        </form>
                        <table>
                        <thead>
                        <tr>
                        <th>图书ID</th>
                        <th>图书名称</th>
                        <th>图书数量</th>
                        <th>图书简介</th>
                        <th>操作</th>
                        </tr>
                        </thead>
                        <tbody>
                        <c:forEach var="books" items="${page.list}">
                        <tr>
                        <td>${books.bookID}</td>
                        <td>${books.bookName}</td>
                        <td>${books.bookCounts}</td>
                        <td>${books.detail}</td>
                        <td>
                        <a href="${pageContext.request.contextPath}/toupdate/${books.bookID}">修改</a>
                        <a href="${pageContext.request.contextPath}/delete/${books.bookID}">删除</a>
                        </td>
                        </tr>
                        </c:forEach>
                        </tbody>
                        </table>
                        <a href="${pageContext.request.contextPath}/toadd">增加</a>
                        <div>
                        <div>
                        <a href="/books/${page.getNavigateFirstPage()}">首页</a>
                        </div>
                        <div c:if="${page.hasPreviousPage}">
                        <a href="/books/${page.prePage}">上一页</a>
                        </div>
                        <span>当前页数:${page.pageNum}</span>
                        <div c:if="${page.hasNextPage}">
                        <a href="/books/${page.nextPage}">下一页</a>
                        </div>
                        <div>
                        <a href="/books/${page.getNavigateLastPage()}">尾页</a>
                        </div>
                        </div>
                        </body>
                        </html>
                        ========================================
                        4.login.jsp
                        ------------------------------
                        在web-inf下
                        -------------------------------
                        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
                        <html>
                        <head>
                        <title>登录页面</title>
                        <link rel="stylesheet" href="/static/css/bootstrap.css">
                        <script src="/static/js/bootstrap.js"></script>
                        </head>
                        <body>
                        <form action="${pageContext.request.contextPath}/login">
                        <div class="form-group">
                        <label for="exampleInputEmail1">Email address</label>
                        <input type="text" name="username" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
                        <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
                        </div>
                        <div class="form-group">
                        <label for="exampleInputPassword1">Password</label>
                        <input type="password" name="password" class="form-control" id="exampleInputPassword1">
                        </div>
                        <div class="form-group form-check">
                        <input type="checkbox" class="form-check-input" id="exampleCheck1">
                        <label class="form-check-label" for="exampleCheck1">Check me out</label>
                        </div>
                        <button type="submit" class="btn btn-primary">Submit</button>
                        </form>
                        </body>
                        </html>
                        ========================================
                        4.updatebooks.jsp
                        ------------------------------
                        在web-inf下
                        -------------------------------
                        <html>
                        <head>
                        <title>更改图书</title>
                        </head>
                        <body>
                        <form action="${pageContext.request.contextPath}/update">
                        图书ID:<input type="text" value="${books.bookID}" name="bookID"><br>
                        图书名称:<input type="text" value="${books.bookName}" name="bookName"><br>
                        图书数量:<input type="text" value="${books.bookCounts}" name="bookCounts"><br>
                        图书细节:<input type="text" value="${books.detail}" name="detail"><br>
                        <button type="submit">修改</button>
                        </form>
                        </body>
                        </html>


                        IP属地:广东12楼2021-12-22 20:47
                        回复
                          !!!!.web.xml里
                          ========================================
                          web.xml
                          ------------------------------
                          配置spring的servlet, <filter>,和session
                          -------------------------------
                          <?xml version="1.0" encoding="UTF-8"?>
                          <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                          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_4_0.xsd"
                          version="4.0">
                          <servlet>
                          <servlet-name>springmvc</servlet-name>
                          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                          <init-param>
                          <param-name>contextConfigLocation</param-name>
                          <param-value>classpath:applicationContext.xml</param-value>
                          </init-param>
                          </servlet>
                          <servlet-mapping>
                          <servlet-name>springmvc</servlet-name>
                          <url-pattern>/</url-pattern>
                          </servlet-mapping>
                          <filter>
                          <filter-name>encodingFilter</filter-name>
                          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
                          <init-param>
                          <param-name>encoding</param-name>
                          <param-value>utf-8</param-value>
                          </init-param>
                          </filter>
                          <filter-mapping>
                          <filter-name>encodingFilter</filter-name>
                          <url-pattern>/*</url-pattern>
                          </filter-mapping>
                          <session-config>
                          <session-timeout>15</session-timeout>
                          </session-config>
                          </web-app>


                          IP属地:广东13楼2021-12-22 20:49
                          回复
                            tip2.新增lombok依赖,请填进pom.xml
                            =====================
                            <dependency>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.16.10</version>
                            <scope>provided</scope>
                            </dependency>


                            IP属地:广东14楼2021-12-22 20:56
                            回复
                              2026-03-12 22:40:00
                              广告
                              不感兴趣
                              开通SVIP免广告
                              导航:-------------------
                              1楼项目总览,
                              2楼pojo,
                              3楼dao,
                              4楼sevice,
                              5楼controller
                              6楼拦截器interceptor,
                              8到10楼资源配置(pom.xml和6个file),
                              12楼jsp,
                              13楼web.xml,
                              14楼新增Lombok依赖。


                              IP属地:广东15楼2021-12-22 21:00
                              回复