프레임 워크는 내가 프레임을 사용자 정의 할 수 당신을 데려 갈 것이다, 중요하지 않습니다

프레임 워크는 내가 프레임을 사용자 정의 할 수 당신을 데려 갈 것이다, 중요하지 않습니다

서문 : 서블릿과 사랑에로되어있는 한 학교 JSP JSTL과 EL 표현식에 언급 된 시간 전에 제목 파티,,, 또 다른 업데이트가 때이 제목은 다시 말할 조금 너무 큰, 이번에는 밖으로 점프 간주 될 수있다. 봄 + SpringMVC + 봄 JDBC 템플릿이 재생 큰 움직임이하는 CRUD 플러스 페이지를 구현하지만, 초점이에없는, 나의 초점은, 제목 비록 조금 큰 JSTL과 EL 표현이지만, 경우에 거친되지 거친 취급 정말, 내가 많이 사용 JSTL 커스텀 태그 패키지 페이지 매김을 말할 수 없다 프레임 워크 물론,이 프레임 워크는 매우 유연하게 할 수 있습니다 사용자 정의 할 나 또한 JSTL과 EL 표현을 배울 수까지 셀 수 . 당신이 먼저 손을 시도하는 내 경우에 따라 시도 할 수 있습니다 궁금하다면 새로운 친구들과 내 블로그의 속도를 따라 한 사람들을 위해, 나는 걱정하지 당신을 생각 나게, SSM 프레임 워크는 말을보고 배울 수없는, 아니 무엇을, 하하, 농담, 그것은, 내가 말했듯이,이 초점이 추가 SSM에 관해서는 JSTL과 EL 표현식, 세 번보다 적지의 중요한 단어입니다, 나는 새와 함께 계속 수있는 방법을 배울하지 않았다, 그것은 손에 함께합니다 당신이 걱정하지 마세요, 걱정하지 마십시오, 이해, 우리가 알고있는 SSM 그것의 머리.

 

 

환경 준비

친구는 "블로그를 참조하기 전에 아이디어가 작성되지 않은 경우 나, 개발 도구 IDEA를 사용 IDEA 초보자 튜토리얼을 내가 메이븐이 친구가 있다면, 당신은 볼 수 모르고, 이것이 메이븐 프로젝트 구축" 나는 Maven의 블로그 "의 도입 전에 쓴 메이븐 메이븐 환경을 볼 수있다"메이븐 설치 및 구성 "https://www.cnblogs.com/zyx110/p/10801666.html 모르는를 구성하는 방법 생각을하는 방법을 모른다" 건설 Maven 프로젝트에서 친구들이 볼 수있다 " IDEA는 초보자 전문 건물에 대해 ,"이 경우 사용됩니다 Tomcat은 마찬가지로, "볼 수 있습니다 IDEA 친구에 Tomcat을 구성하지 않습니다 만들 전문가 초보자를위한 IDEA를 ,이를 완료 좋은" 당신은 코드를 노크 시작할 수 있습니다.

 

 

 

프레임 패키지 JSTL로

간략하게 작성하기 전에 JSTL과 EL 표현식을 설명합니다 :

JSTL 소개 및 환경 구조

JSTL 무엇입니까

JSTL 커스텀 태그 라이브러리는 자바의 집합입니다

왜 사용 JSTL

코드 및 효율성을 향상의 태그 라이브러리의 원칙에 따라 코드 재사용 JSP 페이지, 높은 반복 속도를 지원 재사용 블록

더 읽기 JSP 페이지를 작성할 때, 그것을보고 프론트 엔드 개발에 참여하기 쉽고, XML처럼 보였다

예를 들면 :


 
다른 메시지에서 다른 역할은 로그인 할 때 사용자에게 표시

 

수입 JSTL에 모듈

<! - https://mvnrepository.com/artifact/javax.servlet/jstl -> 
<의존성> 
  <의 groupId>에서 javax.servlet </의 groupId> 
  <artifactId를> JSTL </ artifactId를> 
  <버전> 1.2 </ 버전 > 
</ 의존성>

 

  

 

EL 식은 JSTL 함께 사용

첫 번째 JSTL 작은 프로그램

JSP 페이지에서 가져 오기 JSTL 태그 라이브러리

<% @ 태그 라이브러리 URI = "http://java.sun.com/jsp/jstl/core"접두사 = "C"%>

  

 

라벨 출력을 사용하여

<C : 아웃 값 = "안녕하세요 JSTL"> </ C : 아웃>

  

네 분류 JSTL 태그 : 핵심 태그, 서식 태그, SQL 태그, XML은 EL 식을 태그

  • 자주 JSTL과 함께 사용 EL 식 이름 표현 언어, JSP 페이지보다 직관적 있도록, 간단한 문구.

문구 일반 식 : <% = session.getValue ( "이름") %>

EL 식 작성 <C : 아웃 값 = "$ {sessionScope.name}"/>

  • EL의 표현 형식

에서 중괄호 "{}"을 포함하여 달러 기호 "$"한계와;

  • "."와 "[]"연산자

일반적으로 ² 일반 또는 $ {user.sex} $ {사용자 [ "섹스"]}

² "[]"의 요소 $의 세트를 찾을 수있다 {booklist [0]} .price

²가 포함 된 특수 문자를 사용해야하는 경우 "[]"예를 들어 $ {사용자 [ "첫번째 이름"]}

동적 변수에 의해 ² 가격 $ {사용자 [PARAM]}, 예를 들어 PARAM가 될 수있는 이름 / 성별 / 기타

EL 변수

 

 

EL 자동 변환

 

 

EL 내장 객체

 

 

EL 연산자

 

 

 

JSP 커스텀 태그

사용자 정의 라벨은 무엇입니까

HTML의 많은 실제 개발 과정에 나타나지 않는 + 자바 코드가 혼합 된 JSP 페이지이다, 그러나 때때로 JSP 태그와 타사 태그 JSP에 부합하는 비즈니스 로직 클래스 사양을 캡슐화하는 개발자를 필요로하는 일반 개발 작업을 충족시킬 수 없다 또는 인터페이스는 다른 개발 요구를 충족하기 위해 자신의 태그를 정의 할 수 있습니다. 이 단점이 작품은 무시할 수, 개발 작업 부하에 추가 할 것입니다 만, 이전과 개발 프로세스의 종료 후 통신을 단순화 후반의 유지 보수를 용이하게합니다. 사람들이 (가) 웹 사이트를 개발하는 코드를 작성에 대해 아무것도 몰라 그래서 우리는 라벨 메커니즘의 자신의 세트를 정의 할 수 있습니다.

사용자 정의 라벨의 개발

케이스 시나리오 :

현재 시간을 표시하는 페이지 포맷 : "현재 시간 : 2017년 8월 1일 10시 30분 50초을"

  • 기존 JSP의 경우 다음과 같이 스크립트 개발, 코드는 다음과 같습니다
<%

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

String date = sdf.format(new Date());

%>

当前时间为:<%=date %>

  


 显示结果:

 

 

  • 下面使用自定义标签库来实现这个案例

第一步:编写自定义标签的业务逻辑处理类

 

 

DateTag
package utils;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTag extends TagSupport {
    private String format="yyyy-MM-dd HH:mm:ss";
    private String color="blue";
    private String fontSize="12px";

    public void setFormat(String format) {
        this.format = format;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public void setFontSize(String fontSize) {
        this.fontSize = fontSize;
    }

    public int doStartTag() throws JspException {
        //自定义业务
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        String date = simpleDateFormat.format(new Date());

        String htmlshow = "<p class='' style='font-size:"+fontSize+";color:"+color+"'>"+date+"</p>";

        try {
            pageContext.getOut().print(htmlshow);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return super.doStartTag();
    }
}

  

第二步:在WEB-INF目录下编写*.tld文件注册标签

 

 

 

格式模板

datetag.tld

 

<?xml version="1.0" encoding="utf-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>myshortname</short-name>
    <uri>http://mycompany.com</uri>

    <tag>
        <name>date</name>
        <tag-class>utils.DateTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>format</name>
            <required>false</required>
        </attribute>
        <attribute>
            <name>color</name>
            <required>false</required>
        </attribute>
        <attribute>
            <name>fontSize</name>
            <required>false</required>
        </attribute>

    </tag>

</taglib>

  

 

JSP显示

 

 

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="z" uri="http://mycompany.com" %>
<%@ taglib prefix="c" uri="http://mycompany.com" %>
<html>
<head>
    <title>显示时间</title>
</head>
<body>
<h1>index.jsp</h1>
<c:date/>
</body>
</html>

 

 

  

 

 

 

Spring+SpringMVC+Spring Jdbc Template

数据库结构

 

 

项目结构

 

 

 

Pom.xml

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
  <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
  </dependency>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
  <!--Spring核心基础依赖-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>
  <!--日志相关-->
  <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
  </dependency>
</dependencies>

 

  

 

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--设置访问静态资源-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.mp3</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.mp4</url-pattern>
  </servlet-mapping>

</web-app>

  

 

 

applicationContext.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:tx="http://www.springframework.org/schema/tx"
       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/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
        ">
 

    <!--配置注解要扫描的包-->
    <context:component-scan base-package="controller"></context:component-scan>
    <context:component-scan base-package="dao"></context:component-scan>
    <context:component-scan base-package="Service"></context:component-scan>
    <context:component-scan base-package="pojo"></context:component-scan>
    <context:component-scan base-package="utils"></context:component-scan>
    <context:component-scan base-package="test"></context:component-scan>
    <mvc:annotation-driven></mvc:annotation-driven>

    <!--配置spring-jdbcTemplate-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/bbb?useUnicode=true&characterEncoding=UTF-8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--配置事务-->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--注册事务注解驱动-->
    <tx:annotation-driven transaction-manager="txManager"></tx:annotation-driven>

    <!--配置访问静态资源-->
    <mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
    <mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
    <mvc:resources mapping="/img/**" location="/img/"></mvc:resources>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置前缀-->
        <property name="prefix" value="/"></property>
        <!--配置后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!--创建文件上传组件对象-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
</beans>

 

  

 

Book

package pojo;

public class Book {
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", bookname='" + bookname + '\'' +
                ", price=" + price +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getBookname() {
        return bookname;
    }

    public void setBookname(String bookname) {
        this.bookname = bookname;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    private int id;
    private String bookname;
    private int price;


}

 

  

PageBean

package pojo;

import java.util.List;

public class PageBean<T> {

    private int pageCode;//当前页码
    private int totalPage;//总页数
    private int count;//总记录数
    private int pageSize;//每页记录数
    private List<T> pageList;//每页的数据


    public PageBean(int pageCode, int pageSize, int count, List<T> pageList) {
        this.pageCode = pageCode;
        this.count = count;
        this.pageSize = pageSize;
        this.pageList = pageList;
    }

    public PageBean() {
    }

    public int getPageCode() {
        return pageCode;
    }

    public void setPageCode(int pageCode) {
        this.pageCode = pageCode;
    }

    public int getTotalPage() {
        int tp = count/pageSize;
        return count%pageSize==0 ? tp : tp+1;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public List<T> getPageList() {
        return pageList;
    }

    public void setPageList(List<T> pageList) {
        this.pageList = pageList;
    }
}

 

  

 

BookDao

package dao;

import pojo.Book;

import java.util.List;

public interface BookDao {
    public List<Book> findByPage(int pageCode,int pageSize);
    public int count();
}

 

  

BookDaoImpl

package dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import pojo.Book;

import java.util.List;
@Repository
public class BookDaoImpl implements BookDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public List<Book> findByPage(int pageCode, int pageSize) {
        String sql = "select * from book limit ?,?";
        Object[] param = {(pageCode-1)*pageSize,pageSize};
        return jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class),param);
    }

    @Override
    public int count() {
        String sql = "select count(*) from book";
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }
}

  

 

BookService

package Service;

import pojo.Book;
import pojo.PageBean;

public interface BookService {
    public PageBean<Book> findByPage(int pageCode,int pageSize);
}

 

  

BookServiceImpl

package Service;

import dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pojo.Book;
import pojo.PageBean;
@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookDao bookDao;

    @Override
    public PageBean<Book> findByPage(int pageCode, int pageSize) {
        return new PageBean<Book>(pageCode,pageSize,bookDao.count(),bookDao.findByPage(pageCode,pageSize));
    }
}

 

  

 

BookController

package controller;

import Service.BookService;
import com.sun.org.apache.xml.internal.resolver.readers.XCatalogReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import pojo.Book;
import pojo.PageBean;
import utils.RequestPage;

@Controller
@RequestMapping("/book")
public class BookController {
    @Autowired
    private BookService bookService;

    @RequestMapping("/query")
    public String findByPage(Integer page, Model model){
        page = RequestPage.getPage(page);//判断是否为空
        PageBean<Book> pageBean = bookService.findByPage(page,RequestPage.PAGE_SIZE);
        model.addAttribute("pageBean",pageBean);

        return "book";
    }


}

  

 

DateTag

package utils;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTag extends TagSupport {
    private String format="yyyy-MM-dd HH:mm:ss";
    private String color="blue";
    private String fontSize="12px";

    public void setFormat(String format) {
        this.format = format;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public void setFontSize(String fontSize) {
        this.fontSize = fontSize;
    }

    public int doStartTag() throws JspException {
        //自定义业务
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        String date = simpleDateFormat.format(new Date());

        String htmlshow = "<p class='' style='font-size:"+fontSize+";color:"+color+"'>"+date+"</p>";

        try {
            pageContext.getOut().print(htmlshow);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return super.doStartTag();
    }
}

 

  

PageTag

package utils;

import pojo.PageBean;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;

public class PageTag extends TagSupport {


    private PageBean pageBean;
    private String url;

    public void setUrl(String url) {
        this.url = url;
    }

    public void setPageBean(PageBean pageBean) {
        this.pageBean = pageBean;
    }

    @Override
    public int doStartTag() throws JspException {

        try {
            StringBuffer sb = new StringBuffer();
            //首页
            sb.append("<a href=\"" + url + "?page=1\">首页</a> ");
            //上一页
            if (pageBean.getPageCode() <= 1) {
                sb.append("<span style=\"color: #555;\">上一页</span> ");
            } else {
                sb.append("<a href=\"" + url + "?page=" + (pageBean.getPageCode() - 1) + "\">上一页</a> ");
            }

            //显示页码
            int begin, end;
            if (pageBean.getTotalPage() <= 10) {
                begin = 1;
                end = pageBean.getTotalPage();
            } else {
                begin = pageBean.getPageCode() - 5;
                end = pageBean.getPageCode() + 4;
                if (begin < 1) {
                    begin = 1;
                    end = 10;
                } else if (end > pageBean.getTotalPage()) {
                    begin = pageBean.getTotalPage() - 9;
                    end = pageBean.getTotalPage();
                }
            }

            for (int i = begin; i <= end; i++) {
                if (i == pageBean.getPageCode()) {
                    sb.append("<span style=\"color:red;\">" + i + "</span> ");
                } else {
                    sb.append("<a href=\"" + url + "?page=" + i + "\">[" + i + "]</a> ");
                }
            }

            //下一页
            if (pageBean.getPageCode() >= pageBean.getTotalPage()) {
                sb.append("<span style=\"color: #555;\">下一页</span>");
            } else {
                sb.append("<a href=\"" + url + "?page=" + (pageBean.getPageCode() + 1) + "\">下一页</a> ");
            }
            //尾页
            sb.append("<a href=\"" + url + "?page=" + pageBean.getTotalPage() + "\">尾页</a> \n" +
                    "    页码" + pageBean.getPageCode() + "/" + pageBean.getTotalPage());

            pageContext.getOut().print(sb.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }

        return super.doStartTag();
    }
}

 

 

RequestPage
package utils;

public class RequestPage {
    public static final int PAGE_SIZE =5;

    public static Integer getPage(Integer page){
        if (page==null||page<1){
            page=1;
        }

        return page;
    }

}

  

datetag.tld

<?xml version="1.0" encoding="utf-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>myshortname</short-name>
    <uri>http://mycompany.com</uri>

    <tag>
        <name>date</name>
        <tag-class>utils.DateTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>format</name>
            <required>false</required>
        </attribute>
        <attribute>
            <name>color</name>
            <required>false</required>
        </attribute>
        <attribute>
            <name>fontSize</name>
            <required>false</required>
        </attribute>

    </tag>
    <tag>
        <name>page</name>
        <tag-class>utils.PageTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>pageBean</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>url</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

</taglib>

 

  

 

book.jsp

 

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="z" uri="http://mycompany.com" %>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/book.css">
<html>
<head>
    <title>图书</title>
</head>
<body>
<h1 align="center">图书列表</h1>
<hr>
<table>
    <tr>
        <th>ID</th>
        <th>书名</th>
        <th>价格</th>

    </tr>
    <c:forEach var="book" items="${pageBean.pageList}">
        <tr>
            <td>${book.id}</td>
            <td>${book.bookname}</td>
            <td>${book.price}</td>
        </tr>
    </c:forEach>
</table>
<div id="page">
    <z:page url="${pageContext.request.contextPath}/book/query" pageBean="${pageBean}"></z:page>
</div>
</body>
</html>

 

  

 

运行显示

 

 

 

 

 

 

分享结束

后面我会持续分享SSM框架知识,欲知后文如何,请看下回分解

*****************************************************************************************************

我的博客园地址:https://www.cnblogs.com/zyx110/

转载请说明出处

我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的技术分享“Java匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,人生赢在转折处,改变从现在开始!

支持我的朋友们记得点波推荐哦,您的肯定就是我前进的动力。

 

 

추천

출처www.cnblogs.com/zyx110/p/11295044.html