jsp+servlet+mysql(博客项目)

blog

该项目属于java中级阶段,jsp+servlet+mysql
前端页面是网上下载的,后面改了一些
后台主要实现 对数据库 查,增,主要有分页查询,插入评论,倒叙查询,更多的是查询,过程中遇到了很多bug,经过多次改良后,懂了许多
主要是学习了EL表达式还有分页查询,session,request对象作用域,预编译,转发和重定向,分层思想,现在改bug也快了许多,更熟悉创作流程

话不多说,上代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上是整个项目代码一览图

entity层
Album 相册
Article 文章
Critique 评论
Me (关于我)页面的数据
Photo 照片
每一个都是定义好后给于getter和setter还有toString(本项目没用到),(enp,emp1,Manager没用到)

Album

package com.bbx.entity;

public class Album {
    private int id;
    private String title;
    private String image;
    private String content;
    private String notice;
    private String time;
    private String week;

    public int getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getNotice() {
        return notice;
    }

    public void setNotice(String notice) {
        this.notice = notice;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getWeek() {
        return week;
    }

    public void setWeek(String week) {
        this.week = week;
    }

    @Override
    public String toString() {
        return "Album{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", image='" + image + '\'' +
                ", content='" + content + '\'' +
                ", notice='" + notice + '\'' +
                ", time='" + time + '\'' +
                ", week='" + week + '\'' +
                '}';
    }
}

Article

package com.bbx.entity;

public class Article {
    private int id;
    private String title;
    private String content;
    private String image;
    private String time;
    private String editer;
    private int count;
    private int count1;
    private String type;
    private String notice;
    private String keywords;

    public int getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getEditer() {
        return editer;
    }

    public void setEditer(String editer) {
        this.editer = editer;
    }

    public int getCount() {
        return count;
    }

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

    public int getCount1() {
        return count1;
    }

    public void setCount1(int count1) {
        this.count1 = count1;
    }

    public String getType() {
        return this.type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getNotice() {
        return notice;
    }

    public void setNotice(String notice) {
        this.notice = notice;
    }

    public String getKeywords() {
        return keywords;
    }

    public void setKeywords(String keywords) {
        this.keywords = keywords;
    }

    @Override
    public String toString() {
        return "Article{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", content='" + content + '\'' +
                ", image='" + image + '\'' +
                ", time='" + time + '\'' +
                ", editer='" + editer + '\'' +
                ", count=" + count +
                ", count1=" + count1 +
                ", type='" + type + '\'' +
                ", notice='" + notice + '\'' +
                ", keywords='" + keywords + '\'' +
                '}';
    }
}

Critique

package com.bbx.entity;

public class Critique {

    private int id;
    private int article_id;
    private String content;
    private String name;
    private String time;
    private String photo;
    private String type;
    private String notice;

    @Override
    public String toString() {
        return "critique{" +
                "id=" + id +
                ", article_id=" + article_id +
                ", content='" + content + '\'' +
                ", name='" + name + '\'' +
                ", time='" + time + '\'' +
                ", photo='" + photo + '\'' +
                ", type='" + type + '\'' +
                ", notice='" + notice + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

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

    public int getArticle_id() {
        return article_id;
    }

    public void setArticle_id(int article_id) {
        this.article_id = article_id;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getPhoto() {
        return photo;
    }

    public void setPhoto(String photo) {
        this.photo = photo;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getNotice() {
        return notice;
    }

    public void setNotice(String notice) {
        this.notice = notice;
    }
}


Me

package com.bbx.entity;

public class Me {
    private int id;
    private String content;
    private String name;
    private String notice;

    public int getId() {
        return id;
    }

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

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNotice() {
        return notice;
    }

    public void setNotice(String notice) {
        this.notice = notice;
    }

    @Override
    public String toString() {
        return "Me{" +
                "id=" + id +
                ", content='" + content + '\'' +
                ", name='" + name + '\'' +
                ", notice='" + notice + '\'' +
                '}';
    }
}

Photo

package com.bbx.entity;

public class Photo {
    private int id;
    private String image;
    private String note;
    private String type;
    private String notice;
    private String time;
    private int album_id;

    public int getId() {
        return id;
    }

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

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getNotic() {
        return notice;
    }

    public void setNotic(String notic) {
        this.notice = notic;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public int getAlbum_id() {
        return album_id;
    }

    public void setAlbum_id(int album_id) {
        this.album_id = album_id;
    }

    @Override
    public String toString() {
        return "Photo{" +
                "id=" + id +
                ", image='" + image + '\'' +
                ", note='" + note + '\'' +
                ", type='" + type + '\'' +
                ", notic='" + notice + '\'' +
                ", time='" + time + '\'' +
                ", album_id=" + album_id +
                '}';
    }
}

factor目录该项目没用到

Dbutil
DB类用于存放JDBC连接池和 各种方法

package com.bbx.DButils;

import com.bbx.entity.*;
import com.bbx.servlet.CritiqueInsertServlet;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class Dbutil {

    //final表示该值只能手动改变,不允许中途赋值改变
    //static表示能快速执行,可以被其他类调用
    private static final String driverClass = "com.mysql.jdbc.Driver"; //数据库驱动
    //连接数据库的URL地址
    private static final String url = "jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=UTF-8";
    private static final String username = "root";
    private static final String password = "root";
    private static Connection connection = null;

    //静态代码块负责加载驱动
    static {

        try {
            Class.forName(driverClass);
            //单例模式返回数据库连接对象
            connection = DriverManager.getConnection(url, username, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() {
        return connection;
    }

    //工具方法,sql语句集合,方便调用
    //遍历出数据库中的数据显示在网页
    public static List<Critique> critiqueFind(String sql, Object... objects) throws SQLException {
        //预编译,PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法
        PreparedStatement pstm = connection.prepareStatement(sql);
        //多个?查询

        for (int i = 0;i<objects.length;i++){
            pstm.setObject(i+1,objects[i]);
        }

        ResultSet rs = pstm.executeQuery();
//        System.out.println("$$$$$$$$$$$$$$$$$$$$$"+sql);
        List<Critique> list = new ArrayList<>();
        while (rs.next()) {
            Critique critique = new Critique();
            critique.setId(rs.getInt("id"));
            critique.setArticle_id(rs.getInt("article_id"));
            critique.setContent(rs.getString("content"));
            critique.setName(rs.getString("name"));
            critique.setTime(rs.getString("time"));
            critique.setPhoto(rs.getString("photo"));
            critique.setType(rs.getString("type"));
            critique.setNotice(rs.getString("notice"));
            list.add(critique);
        }
        return list;
    }

    //求表中数据总条数
    public static int findAll(String sql, Object... objects) throws SQLException {

        int countpage=0;

        //预编译,PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法
        PreparedStatement pstm = connection.prepareStatement(sql);
        //多个?查询
        for (int i = 0;i<objects.length;i++){
            pstm.setObject(i+1,objects[i]);
        }
        ResultSet rs = pstm.executeQuery();
        while (rs.next()) {
             countpage++;
        }
        return countpage;
    }

    public static List<Photo> photosFind(String sql, Object... objects) throws SQLException {
        //预编译,PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法
        PreparedStatement pstm = connection.prepareStatement(sql);
        //多个?查询
        for (int i = 0;i<objects.length;i++){
            pstm.setObject(i+1,objects[i]);
        }
        ResultSet rs = pstm.executeQuery();
        List<Photo> list = new ArrayList<>();
        while (rs.next()) {
            Photo photo = new Photo();
            photo.setId(rs.getInt("id"));
            photo.setImage(rs.getString("image"));
            photo.setNote(rs.getString("note"));
            photo.setType(rs.getString("type"));
            list.add(photo);
        }
        return list;
    }

    public static List<Me> mesFind(String sql, Object... objects) throws SQLException {
        //预编译,PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法
        PreparedStatement pstm = connection.prepareStatement(sql);
        //多个?查询
        for (int i = 0;i<objects.length;i++){
            pstm.setObject(i+1,objects[i]);
        }
        ResultSet rs = pstm.executeQuery();
        List<Me> list = new ArrayList<>();
        while (rs.next()) {
            Me me = new Me();
            me.setId(rs.getInt("id"));
            me.setContent(rs.getString("content"));
            list.add(me);
        }
        return list;
    }


    public static List<Article> articlesFind(String sql, Object... objects) throws SQLException {
        //预编译,PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法
        PreparedStatement pstm = connection.prepareStatement(sql);
        //多个?查询
        for (int i = 0;i<objects.length;i++){
            pstm.setObject(i+1,objects[i]);
        }
        ResultSet rs = pstm.executeQuery();
        List<Article> list = new ArrayList<>();
        while (rs.next()) {
            Article article = new Article();
            article.setId(rs.getInt("id"));
            article.setTitle(rs.getString("title"));
            article.setContent(rs.getString("content"));
            article.setImage(rs.getString("image"));
            article.setTime(rs.getString("time"));
            article.setEditer(rs.getString("editer"));
            article.setCount(rs.getInt("count"));
            article.setCount1(rs.getInt("count1"));
            article.setType(rs.getString("type"));
            article.setNotice(rs.getString("notice"));
            article.setKeywords(rs.getString("keywords"));
            list.add(article);
        }
        return list;
    }

    }


dao层
dao层主要用来写sql语句,调用DB中的方法,如果觉得很多方法写在DB很乱可以写在dao或者service

AlbumDao

package com.bbx.dao;

import com.bbx.DButils.Dbutil;
import com.bbx.entity.Photo;

import java.sql.SQLException;
import java.util.List;

public class AlbumDao {

    Dbutil dbutil=new Dbutil();

    //查找相册1
    public List<Photo> SelectAlbum1() throws SQLException {
        String sql="select * from photo where type=1";
        List<Photo> select=dbutil.photosFind(sql);
        return select;
    }

    //查找相册2
    public List<Photo> SelectAlbum2() throws SQLException {
        String sql="select * from photo where type=2";
        List<Photo> select=dbutil.photosFind(sql);
        return select;
    }
}

ArticleDao

package com.bbx.dao;

import com.bbx.DButils.Dbutil;
import com.bbx.entity.Article;
import com.bbx.entity.Critique;
import com.bbx.service.ArticleService;
import com.bbx.service.CritiqueService;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class ArticleDao {

    Dbutil dbutil=new Dbutil();
    
    //第一次进入article.jsp页面时,调用该方法获取数据
    public List<Article> firstSelectArticle() throws SQLException {
        int all=getallNumArticle();
        List<Article> select=null;
        String sql1 = "select * from article";
        String sql2 = "select * from article limit 0,3";
        if(all<3){
            select = dbutil.articlesFind(sql1);
        }else {
            select = dbutil.articlesFind(sql2);
        }
        return select;
    }
    
    //根据用户点击的文章,按传输过来的id值选择下面7个方法查询
    public List<Article> SelectArticle1() throws SQLException {
        String sql="select * from article where id=1";
        List<Article> select=dbutil.articlesFind(sql);
        return select;
    }

    public List<Article> SelectArticle2() throws SQLException {
        String sql="select * from article where id=2";
        List<Article> select=dbutil.articlesFind(sql);
        return select;
    }

    public List<Article> SelectArticle3() throws SQLException {
        String sql="select * from article where id=3";
        List<Article> select=dbutil.articlesFind(sql);
        return select;
    }

    public List<Article> SelectArticle4() throws SQLException {
        String sql="select * from article where id=4";
        List<Article> select=dbutil.articlesFind(sql);
        return select;
    }

    public List<Article> SelectArticle5() throws SQLException {
        String sql="select * from article where id=5";
        List<Article> select=dbutil.articlesFind(sql);
        return select;
    }

    public List<Article> SelectArticle7() throws SQLException {
        String sql="select * from article where id=7";
        List<Article> select=dbutil.articlesFind(sql);
        return select;
    }

    //根据当前页数,求搜索的起始位置
    public int startpageArticle(int currentpage){

        int page=currentpage;
        int start=0;
        if(page==1){
            start=0;
        }else {
            start = (page - 1) * 3;
        }
        return start;
    }

    //根据当前页数,求搜索的末尾位置
    public int endpageArticle(int currentpage) throws SQLException {

        int end=0;
        //如果等于最后一页
        if(currentpage==getpageNumArticle()){
            end=getallNumArticle();
        }else {
            end = currentpage * 3;
        }
        return end;
    }

    //当最后一页不足3个时
    public int endpage(int currentpage) throws SQLException {
        int end=endpageArticle(currentpage);
        int c=currentpage;
        int i=end-((c-1)*3);
        int limt=3;
        //如果超过
        if(i<3){
            limt=i;
        }
        return limt;
    }

    //分页查询
    public List<Article> changePage(int currentpage, int start, int limt) throws SQLException {

        //limit索引,显示索引以后多少行
        String sql="select * from article limit ?,?";

        List<Article> strings5= dbutil.articlesFind(sql,start,limt);

        return strings5;
    }

    //获取article总条数
    public int getallNumArticle() throws SQLException {
        String sql="select * from article";
        int all=dbutil.findAll(sql);
        return  all;
    }

    //获取critique总页数
    public int getpageNumArticle() throws SQLException {
        int all=getallNumArticle();
        int countpage=0;
        if(all%3==0){
            countpage=all/3;
        }else if(all%3!=0){
            countpage=(all/3)+1;
        }
        return countpage;
    }


    }

CritiqueDao

package com.bbx.dao;

import com.bbx.DButils.Dbutil;
import com.bbx.entity.Critique;
import com.bbx.service.CritiqueService;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;

public class CritiqueDao {
    Dbutil dbutil = new Dbutil();

    //首次进入页面,获取评论
    public List<Critique> firstSelectCritique() throws SQLException {
        int all=getallNumCritique();
        List<Critique> select=null;
        String sql1 = "select * from critique";
        String sql2 = "select * from critique limit 0,5";
        if(all<5){
            select = dbutil.critiqueFind(sql1);
        }else {
            select = dbutil.critiqueFind(sql2);
        }
        return select;
    }

    //实现album相册里的最新评论
    public List<Critique> descSlectCritique() throws SQLException {
        List<Critique> select=null;
        //在critique表中按照time的倒叙desc输出5条
        String sql="select *  from critique  order by time desc limit 5";
        select=dbutil.critiqueFind(sql);
        return select;
    }

    //实现Critique插入语句的方法
    public int addCritique(String name,String content) throws SQLException {

        CritiqueService service=new CritiqueService();

        //获取当天时间
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        String time = s.format(c.getTime());

        //获取数据库连接对象
        Connection connection = Dbutil.getConnection();

        //sql插入语句
        String sql = "insert into critique(content,name,time) values(?,?,?)";

        //PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法
        PreparedStatement ps=(PreparedStatement)connection.prepareStatement(sql);
        ps.setString(1,content);
        ps.setString(2,name);
        ps.setString(3,time);

        //i为执行成功的条数
        int i = ps.executeUpdate();

        //将i返回到service层
        return i;
    }

    //根据当前页数,求搜索的起始位置
    public int startpageCritique(int currentpage){

        int page=currentpage;
        int start=0;
        if(page==1){
            start=0;
        }else {
            start = (page - 1) * 5;
        }
        return start;
    }

    //根据当前页数,求搜索的末尾位置
    public int endpageCritique(int currentpage) throws SQLException {

        int end=0;
        //如果等于最后一页
        if(currentpage==getpageNumCritique()){
            end=getallNumCritique();
        }else {
            end = currentpage * 5;
        }
        return end;
    }

    //当最后一页不足5个时
    public int endpage(int currentpage) throws SQLException {
        int end=endpageCritique(currentpage);
        int c=currentpage;
        int i=end-((c-1)*5);
        int limt=5;
        //如果超过
        if(i<5){
            limt=i;
        }
        return limt;
    }

    //分页查询
    public List<Critique> changePage(int currentpage,int start,int limt) throws SQLException {

        //limit索引,显示索引以后多少行
        String sql="select * from critique limit ?,?";

        List<Critique> strings5= dbutil.critiqueFind(sql,start,limt);

        return strings5;
    }

    //获取critique总条数
    public int getallNumCritique() throws SQLException {
        String sql="select * from critique";
        int all=dbutil.findAll(sql);
        return  all;
    }

    //获取critique总页数
    public int getpageNumCritique() throws SQLException {
        int all=getallNumCritique();
        int countpage=0;
        if(all%5==0){
            countpage=all/5;
        }else if(all%5!=0){
            countpage=(all/5)+1;
        }
        return countpage;
    }
}


MeDao

package com.bbx.dao;

import com.bbx.DButils.Dbutil;
import com.bbx.entity.Me;
import com.bbx.entity.Photo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

public class MeDao {

    Dbutil dbutil=new Dbutil();

    //查找Me
    public List<Me> SelectMe() throws SQLException {

        String sql="select * from me where id=1";
        List<Me> select= dbutil.mesFind(sql);
        return select;
    }

}

service层
service主要用来连接dao层和servlet层,可以写一些方法,有利于项目封装和可读性

AlbumService

package com.bbx.service;

import com.bbx.dao.AlbumDao;
import com.bbx.entity.Album;
import com.bbx.entity.Photo;

import java.sql.SQLException;
import java.util.List;

public class AlbumService {

     AlbumDao dao=new AlbumDao();

     //查找相册1
     public List<Photo> finaAll1(){
         List<Photo> strings=null;

         try {
             strings=dao.SelectAlbum1();
         } catch (SQLException e) {
             e.printStackTrace();
         }
         return strings;
     }

    //查找相册2
    public List<Photo> finaAll2(){
        List<Photo> strings=null;

        try {
            strings=dao.SelectAlbum2();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }

}

ArticleService

package com.bbx.service;

import com.bbx.dao.ArticleDao;
import com.bbx.entity.Article;
import com.bbx.entity.Critique;

import java.sql.SQLException;
import java.util.List;

public class ArticleService {

    ArticleDao dao=new ArticleDao();
    
    //第一次进入article.jsp页面时调用该方法
    public List<Article> finaAll(){

        List<Article> strings=null;

        try {
            strings=dao.firstSelectArticle();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }
    
    //一下7个方法都是根据用户点击的id值,分别查询对应的内容
    public List<Article> finaAll1(){

        List<Article> strings=null;

        try {
            strings=dao.SelectArticle1();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }

    public List<Article> finaAll2(){

        List<Article> strings=null;

        try {
            strings=dao.SelectArticle2();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }

    public List<Article> finaAll3(){

        List<Article> strings=null;

        try {
            strings=dao.SelectArticle3();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }

    public List<Article> finaAll4(){

        List<Article> strings=null;

        try {
            strings=dao.SelectArticle4();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }

    public List<Article> finaAll5(){

        List<Article> strings=null;

        try {
            strings=dao.SelectArticle5();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }

    public List<Article> finaAll7(){

        List<Article> strings=null;

        try {
            strings=dao.SelectArticle7();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }
    
    //用户再article.jsp页面点击其他页时,调用该方法,实现分页效果
    public List<Article> changePage(String currentpage1) throws SQLException {

        //critique表总条数
        int all=dao.getallNumArticle();
        //按总数分,获取总页数
        int coutpage=dao.getpageNumArticle();

        int currentpage=Integer.parseInt(currentpage1);

        //每次查多少条
        int limt=dao.endpage(currentpage);

        //起始位置
        int start=dao.startpageArticle(currentpage);
        //末尾位置
        int end=dao.endpageArticle(currentpage);

        //查询
        List<Article> strings5=dao.changePage(currentpage,start,limt);

        return strings5;
    }
}

CritiqueService

package com.bbx.service;
import com.bbx.dao.*;
import com.bbx.entity.Album;
import com.bbx.entity.Critique;
import com.bbx.servlet.CritiqueInsertServlet;
import sun.misc.Request;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


public class CritiqueService {

     CritiqueDao dao = new CritiqueDao();
    
     //用户第一次进入critique.jsp中时,调用该方法,获取数条评论
    public  List<Critique> firstFind(){
        List<Critique> strings = null;
        try {
             strings = dao.firstSelectCritique();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }


    public int addCritique(String name,String content) throws SQLException {

        //将参数传递到dao层执行再返回
        int i = dao.addCritique(name, content);

        return i;
    }

    //非首次进入,点击分页后调用该方法
    public List<Critique> changePage(String currentpage1) throws SQLException {

        //critique表总条数
        int all=dao.getallNumCritique();
        //按总数分,获取总页数
        int coutpage=dao.getpageNumCritique();

        int currentpage=Integer.parseInt(currentpage1);

        //每次查多少条
        int limt=dao.endpage(currentpage);

        //起始位置
        int start=dao.startpageCritique(currentpage);
        //末尾位置
        int end=dao.endpageCritique(currentpage);

        //查询
        List<Critique> strings5=dao.changePage(currentpage,start,limt);

        return strings5;
    }

    //album相册倒叙输出5条
    public List<Critique> descSelectCritique() throws SQLException {
        CritiqueDao dao=new CritiqueDao();
        List<Critique> select=dao.descSlectCritique();
        return select;
    }
}

MeService

package com.bbx.service;

import com.bbx.dao.MeDao;
import com.bbx.entity.Me;

import java.sql.SQLException;
import java.util.List;

public class MeService {

    MeDao dao=new MeDao();
    
    //用户进入about页面时,调用该方法,获取数据,传送到jsp
    public List<Me> finaAll(){

        List<Me> strings=null;

        try {
            strings=dao.SelectMe();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return strings;
    }
}

servlet层
servlet主要用于转发用户请求,跳转页面,与jsp交流

IndexFirstServlet(首页index.jsp的,用户首次进入项目时调用,创建了aend sesson对象,ArticleFirstServlet也能获取到总页数)

package com.bbx.servlet;

import com.bbx.dao.ArticleDao;
import com.bbx.dao.CritiqueDao;
import com.bbx.entity.Article;
import com.bbx.service.ArticleService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(name = "IndexFirstServlet")
public class IndexFirstServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    ArticleService service = new ArticleService();
    ArticleDao dao = new ArticleDao();
    CritiqueDao cdao=new CritiqueDao();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");

        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        //创建session对象,该对象直到项目关闭才消失
        HttpSession session = request.getSession();

        int currentpage = 1;
        int aend=1;
        try {
            aend=dao.getpageNumArticle();
        } catch (SQLException e) {
            e.printStackTrace();
        }


        List<Article> articles = service.finaAll();

        request.setAttribute("articles", articles);
        //reques对象保存的值作用域在该servlet里面
        request.setAttribute("currentpage", currentpage);

        //session保存的值直到项目关闭才消失
        session.setAttribute("aend", aend);

        request.getRequestDispatcher("/WEB-INF/page/index.jsp").forward(request, response);

    }



    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

IndexServlet(非首次进入,用户点击其他页之后,调用实现分页效果)

package com.bbx.servlet;

import com.bbx.dao.ArticleDao;
import com.bbx.dao.CritiqueDao;
import com.bbx.entity.Article;
import com.bbx.service.ArticleService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(name = "IndexFirstServlet")
public class IndexFirstServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    ArticleService service = new ArticleService();
    ArticleDao dao = new ArticleDao();
    CritiqueDao cdao=new CritiqueDao();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");

        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        //创建session对象,该对象直到项目关闭才消失
        HttpSession session = request.getSession();

        int currentpage = 1;
        int aend=1;
        try {
            aend=dao.getpageNumArticle();
        } catch (SQLException e) {
            e.printStackTrace();
        }


        List<Article> articles = service.finaAll();

        request.setAttribute("articles", articles);
        //reques对象保存的值作用域在该servlet里面
        request.setAttribute("currentpage", currentpage);

        //session保存的值直到项目关闭才消失
        session.setAttribute("aend", aend);

        request.getRequestDispatcher("/WEB-INF/page/index.jsp").forward(request, response);

    }



    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

MeServlet(关于我,about.jsp页面的,调用获取数据)

package com.bbx.servlet;

import com.bbx.entity.Me;
import com.bbx.service.MeService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "MeServlet")
public class MeServlet extends HttpServlet {

    private static final long serialVersionUID=1L;

    MeService service=new MeService();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");
        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        //将service.finaAll中的String数据传入mes对象中
        List<Me> mes=service.finaAll();

        //request对象在servlet外会失效,保存critiques这个对象,使得页面能获取到该值
        request.setAttribute("mes",mes);

        //转发
        request.getRequestDispatcher("/WEB-INF/page/about.jsp").forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

AriticleFirstServlet(用于首次进入文章区article.jsp)

package com.bbx.servlet;

import com.bbx.dao.ArticleDao;
import com.bbx.dao.CritiqueDao;
import com.bbx.entity.Article;
import com.bbx.entity.Critique;
import com.bbx.service.ArticleService;
import com.bbx.service.CritiqueService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(name = "ArticleFirstServlet")
public class ArticleFirstServlet extends HttpServlet {

    private static final long serialVersionUID=1L;
    ArticleService service=new ArticleService();
    ArticleDao dao=new ArticleDao();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");

        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        int currentpage=1;
        List<Article> articles=service.finaAll();

        request.setAttribute("articles",articles);
        request.setAttribute("currentpage",currentpage);

        request.getRequestDispatcher("/WEB-INF/page/article.jsp").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doPost(request,response);
    }
}

ArticleServlet(非首次进入article.jsp,用于实现分页)

package com.bbx.servlet;

import com.bbx.entity.Article;
import com.bbx.entity.Critique;
import com.bbx.service.ArticleService;
import com.bbx.service.CritiqueService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(name = "ArticleServlet")
public class ArticleServlet extends HttpServlet {

    private static final long serialVersionUID=1L;

    ArticleService service=new ArticleService();
    CritiqueService service2=new CritiqueService();
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");
        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        //当前所在页数
        String currentpage = request.getParameter("currentpage");
        int currentpage1=Integer.parseInt(currentpage);
        List<Article> articles = null;
        try {
            articles = service.changePage(currentpage);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //request对象在servlet外会失效,保存critiques这个对象,使得页面能获取到该值
        request.setAttribute("articles", articles);
        request.setAttribute("currentpage",currentpage);

        //获取CritiqueService中的方法,调用获取critique数据库表中的数据
        List<Critique> critiques2=service2.firstFind();
        //request对象在servlet外会失效,保存critiques这个对象,使得页面能获取到该值
        request.setAttribute("critiques2",critiques2);

        //转发
        request.getRequestDispatcher("/WEB-INF/page/article.jsp").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         doPost(request,response);
    }
}

AriticleDetailServlet(用于用户点击小文章时,跳到指定文章)

package com.bbx.servlet;

import com.bbx.entity.Article;
import com.bbx.entity.Critique;
import com.bbx.service.ArticleService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "ArticleDetailServlet")
public class ArticleDetailServlet extends HttpServlet {

    private static final long serialVersionUID=1L;
    ArticleService service=new ArticleService();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");
        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        //获取用户点击a标签传输的参数
        String article = request.getParameter("id");
        //String类型转int类型
        int id = Integer.valueOf(article).intValue();

        //获取CritiqueService中的方法,调用获取critique数据库表中的数据
        List<Article> articles1=service.finaAll1();
        List<Article> articles2=service.finaAll2();
        List<Article> articles3=service.finaAll3();
        List<Article> articles4=service.finaAll4();
        List<Article> articles5=service.finaAll5();
        List<Article> articles7=service.finaAll7();

        //request对象在servlet外会失效,保存critiques这个对象,使得页面能获取到该值
        //判断用户点击的是相册1还是相册2
        if(id==1){
            request.setAttribute("articles",articles1);
        }else if(id==2){
            request.setAttribute("articles",articles2);
        }else if(id==3){
            request.setAttribute("articles",articles3);
        }else if(id==4){
            request.setAttribute("articles",articles4);
        }else if(id==5){
            request.setAttribute("articles",articles5);
        }else if(id==7){
            request.setAttribute("articles",articles7);
        }

        request.getRequestDispatcher("/WEB-INF/page/article_detail.jsp").forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         doPost(request,response);
    }
}

AlbumFindServlet(用于查找相册,跳到album.jsp页面,页面有最新评论)

package com.bbx.servlet;

import com.bbx.entity.Album;
import com.bbx.entity.Critique;
import com.bbx.service.AlbumService;
import com.bbx.service.CritiqueService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(name = "AlbumFindServlet")
public class AlbumFindServlet extends HttpServlet {

    private static final long serialVersionUID=1L;
    CritiqueService service = new CritiqueService();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //获取CritiqueService中的方法,调用获取critique数据库表中的数据
        List<Critique> critiques= null;
        try {
            //按时间time倒叙输出5条
            critiques = service.descSelectCritique();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //request对象在servlet外会失效,保存critiques这个对象,使得页面能获取到该值
        request.setAttribute("critiques",critiques);

        //转发
        request.getRequestDispatcher("/WEB-INF/page/album.jsp").forward(request,response);
    }
}

AlbumDetailServlet(跳转到点击的指定相册)

package com.bbx.servlet;

import com.bbx.entity.Critique;
import com.bbx.entity.Photo;
import com.bbx.service.AlbumService;
import com.bbx.service.CritiqueService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "AlbumDetailServlet")
public class AlbumDetailServlet extends HttpServlet {

      private static final long serialVersionUID=1L;
      CritiqueService critiqueService = new CritiqueService();
      AlbumService albumService=new AlbumService();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //将service.finaAll中的list数据传入photos对象中
        List<Photo> photos1 = albumService.finaAll1();
        List<Photo> photos2 = albumService.finaAll2();

        //获取CritiqueService中的方法,调用获取critique数据库表中的数据
        List<Critique> critiques=critiqueService.firstFind();

        //request对象在servlet外会失效,保存critiques这个对象,使得页面能获取到该值
        request.setAttribute("critiques",critiques);

        //获取用户点击a标签传输的参数
        String album = request.getParameter("album");
        //String类型转int类型
        int id = Integer.valueOf(album).intValue();
        //判断用户点击的是相册1还是相册2
        if(id==1){
            request.setAttribute("photos",photos1);
        }else if(id==2){
            request.setAttribute("photos",photos2);
        }

        //转发
        request.getRequestDispatcher("/WEB-INF/page/album_detail.jsp").forward(request,response);
    }
}

CritiqueFirstFindServlet(用于首次访问评论区,定义session对象cend)

package com.bbx.servlet;

import com.bbx.dao.CritiqueDao;
import com.bbx.entity.Critique;
import com.bbx.service.CritiqueService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(name = "CritiqueFirstFindServlet")
public class CritiqueFirstFindServlet extends HttpServlet {

    private static final long serialVersionUID=1L;
    CritiqueService service = new CritiqueService();
    CritiqueDao dao=new CritiqueDao();
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");

        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");
        
        //定义session对象,该对象保存的值生命周期为项目运行开始到项目结束
        HttpSession session=request.getSession();
        
        int currentpage=1;
        int cend=1;
        try {
            //获取评论的总页数
            cend=dao.getpageNumCritique();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        List<Critique> critiques=service.firstFind();

        request.setAttribute("critiques",critiques);
        request.setAttribute("currentpage",currentpage);
        
        session.setAttribute("cend", cend);
        System.out.println(cend);
        request.getRequestDispatcher("/WEB-INF/page/critique.jsp").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          doPost(request,response);
    }
}

CritiqueFindServlet(非首次访问,用于用户点击其他页时,实现分页效果)

package com.bbx.servlet;


import com.bbx.DButils.Dbutil;
import com.bbx.dao.CritiqueDao;
import com.bbx.entity.Critique;
import com.bbx.service.CritiqueService;

import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;


@WebServlet(name = "CritiqueFindServlet")
public class CritiqueFindServlet extends javax.servlet.http.HttpServlet {

    private static final long serialVersionUID = 1L;

    CritiqueService service = new CritiqueService();
    CritiqueDao dao=new CritiqueDao();
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        doGet(request, response);

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");

        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        //当前所在页数
        String currentpage = request.getParameter("currentpage");
        int currentpage1=Integer.parseInt(currentpage);
        List<Critique> critiques = null;
        try {
            critiques = service.changePage(currentpage);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //request对象在servlet外会失效,保存critiques这个对象,使得页面能获取到该值
        request.setAttribute("critiques", critiques);
        request.setAttribute("currentpage",currentpage);
        //转发
        request.getRequestDispatcher("/WEB-INF/page/critique.jsp").forward(request, response);
    }
}

CritiqueInsertServlet(用于插入评论)

package com.bbx.servlet;

import com.bbx.service.AlbumService;
import com.bbx.service.CritiqueService;
import sun.misc.Request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet(name = "CritiqueInsertServlet")
public class CritiqueInsertServlet extends HttpServlet {

    private static final long serialVersionUID=1L;
    CritiqueService service = new CritiqueService();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置HttpServletResponse使用的utf-8编码
        request.setCharacterEncoding("UTF-8");
        //通知浏览器解码方式使用UTF-8
        response.setContentType("text/html;chatset=UTF-8");

        //获取页面输入的name和content
        String name=new String(request.getParameter("name"));
        String content=request.getParameter("content");

        try {
            //i为成功插入数据库中的条数
            int i = service.addCritique(name, content);
            System.out.println("success insert"+i);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //重定向
        response.sendRedirect("CritiqueFindServlet");
    }
}

Test层
在这里插入图片描述
导入这个包,才能测试,用于写代码过程中不断测试数据有无报错

package com.bbx.test;

import com.bbx.DButils.Dbutil;
import com.bbx.dao.AlbumDao;
import com.bbx.dao.ArticleDao;
import com.bbx.dao.CritiqueDao;
import com.bbx.dao.MeDao;
import com.bbx.entity.Critique;
import com.bbx.service.AlbumService;
import com.bbx.service.ArticleService;
import com.bbx.service.CritiqueService;
import com.bbx.service.MeService;
import org.junit.Test;

import java.sql.SQLException;
import java.util.List;

public class Test1 {
//   @Test
//    public void serviceTest(){
//       CritiqueService c=new CritiqueService();
//       System.out.println(c.finaAll());
//
//   }

//   public void AlbumDaoTest() throws SQLException {
//       AlbumDao a=new AlbumDao();
//       System.out.println(a.SelectAlbum());
//   }

//     public void AlbumServiceTest(){
//         AlbumService c=new AlbumService();
//         System.out.println(c.finaAll2());
//
//   }

//    public void MeServiceTest(){
//       MeService m=new MeService();
//       System.out.println(m.finaAll());
//   }

    //    public void MeDaoTest(){
//       MeDao m=new MeDao();
//       try {
//           System.out.println(m.SelectMe());
//       } catch (SQLException e) {
//           e.printStackTrace();
//       }
//   }
    @Test
    public void ArticleTest() {
        ArticleService a = new ArticleService();
        System.out.println(a.finaAll());
    }

    @Test
    public void ArticleDaoTest() throws SQLException {
        ArticleDao dao=new ArticleDao();
        System.out.println("总条数:"+dao.getallNumArticle());
        System.out.println("总页数:"+dao.getpageNumArticle());
    }


    @Test
    public void DbutilTest() {
        String sql0 = "select * from critique";
        Dbutil d = new Dbutil();
        try {
            System.out.println(d.critiqueFind(sql0));
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    @Test
    public void CritiqueDao() throws SQLException {
        CritiqueDao dao = new CritiqueDao();
        System.out.println(dao.descSlectCritique());
    }

    @Test
    public void CritiqueService() {
        CritiqueService c = new CritiqueService();
        System.out.println(c.firstFind());
    }
}

WEB-INF
在这里插入图片描述
lib目录
很多包可以去该网站下载:https://mvnrepository.com/artifact/taglibs/standard/1.0.6
使用EL表达式得导入第1,2个包
junit包用于测试类
mysql包用于连接数据库

page目录
在这里插入图片描述
用于存放jsp页面,jsp页面放入WEB-INF下可以得到保护,只有通过servlet才能进入到jsp页面中

jsp层
该项目很多css,js都是封装好了的,要找的话,在网站上检查元素寻找

EL表达式使用

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

遍历list

<c:forEach items="${articles}" var="article">
        <h3><a href="ArticleDetailServlet?id=${article.id}">
          ${article.title}
        </a>
        </h3>
        <figure><img src="${article.image}"></figure>
        <ul>
          <div class="content" style="height:12em;clear:both;">
              ${article.content}
          </div>

            <ul>
            </ul>
          <a href="ArticleDetailServlet?id=2" target="_blank" class="readmore" style="color:white;">阅读全文&gt;&gt;</a>
        </ul>
        <p class="autor"><span>作者:${article.editer}</span><span>分类:【<a href="IndexServlet">${article.type}</a></span><span>浏览(<a href="IndexServlet">${article.count}</a></span><span>评论(<a href="IndexServlet">${article.count1}</a></span></p>
        <div class="dateview">${article.time}</div>
        </c:forEach>

做判断

     <c:if test="${currentpage==1}" var="result">
        <a href="#">&lt;</a>
      </c:if>
      <c:if test="${!result}">
        <a href="IndexServlet?currentpage=${currentpage-1}">&lt;</a>
      </c:if>

      <b>${currentpage}</b>

      <c:if test="${currentpage == aend}" var="result2">
        <a href="#">&gt;</a>
      </c:if>
      <c:if test="${!result2}">
        <a href="IndexServlet?currentpage=${currentpage+1}">&gt;</a>
      </c:if>

index.jsp(首页)

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%--
  Created by IntelliJ IDEA.
  User: �Ե�
  Date: 2019/9/7
  Time: 20:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0056)http://localhost:8080/BlogJSPServlet2/index/index?page=1 -->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title>个人博客——主页</title>
  <meta name="keywords" content="个人博客模板,博客模板,响应式">
  <meta name="description" content="如影随形主题的个人博客模板,神秘、俏皮。">
  <link href="../../index_files/base.css" rel="stylesheet">
  <link href="../../index_files/index.css" rel="stylesheet">
  <link href="../../index_files/style.css" rel="stylesheet">
  <link href="../../index_files/media.css" rel="stylesheet">
  <style type="text/css">
    /*为段落定义样式*/
  </style>
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
  <!--[if lt IE 9]>
  <script src="../include/js/modernizr.js"></script>
  <![endif]-->
  <script src="../../index_files/share.js.下载"></script><link rel="stylesheet" href="../../index_files/share_style1_32.css"></head>
<body>
<div class="ibody">
  <header>
    <h1>A blog for astronomy enthusiasts</h1>
    <h2>It has been said that astronomy is a humbling and character-building experience</h2>
    <div class="logo"><a href="IndexFirstServlet"></a></div>

    <nav id="topnav">
      <a href="IndexFirstServlet" id="topnav_current">首页</a>
      <a href="MeServlet">关于我</a>
      <a href="ArticleFirstServlet">慢生活</a>
      <a href="AlbumFindServlet">我的相册</a>
      <a href="CritiqueFirstFindServlet">留言板</a>
    </nav>
  </header>
  <article>
    <div class="banner">
      <ul class="texts">
        <p>20157141949</p>
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新视野号探测器飞掠冥王星</p>
      </ul>
    </div>
    <div class="bloglist">
      <h2>
        <p><span>推荐</span>文章</p>
      </h2>
      <div class="blogs">
        <c:forEach items="${articles}" var="article">
        <h3><a href="ArticleDetailServlet?id=${article.id}">
          ${article.title}
        </a>
        </h3>
        <figure><img src="${article.image}"></figure>
        <ul>
          <div class="content" style="height:12em;clear:both;">
              ${article.content}
          </div>

            <ul>
            </ul>
          <a href="ArticleDetailServlet?id=2" target="_blank" class="readmore" style="color:white;">阅读全文&gt;&gt;</a>
        </ul>
        <p class="autor"><span>作者:${article.editer}</span><span>分类:【<a href="IndexServlet">${article.type}</a></span><span>浏览(<a href="IndexServlet">${article.count}</a></span><span>评论(<a href="IndexServlet">${article.count1}</a></span></p>
        <div class="dateview">${article.time}</div>
        </c:forEach>
      </div>


    </div>

    <div class="page">

      <c:if test="${currentpage==1}" var="result">
        <a href="#">&lt;</a>
      </c:if>
      <c:if test="${!result}">
        <a href="IndexServlet?currentpage=${currentpage-1}">&lt;</a>
      </c:if>

      <b>${currentpage}</b>

      <c:if test="${currentpage == aend}" var="result2">
        <a href="#">&gt;</a>
      </c:if>
      <c:if test="${!result2}">
        <a href="IndexServlet?currentpage=${currentpage+1}">&gt;</a>
      </c:if>

    </div>
  </article>
  <aside>

    <div class="avatar"><a href="IndexFirstServlet"><span>明辉</span></a></div>
    <div class="topspaceinfo">
      <h1>给岁月以文明</h1>
      <p>宇宙就是一座黑暗森林,每个文明都是带枪的猎人...</p>
    </div>
    <div class="about_c">
      <p>网名:pluto</p>
      <p>职业:Java工程师</p>
      <p>籍贯:中国-韶关</p>
      <p>QQ:1481184032</p>
      <p>邮箱:13112033929@163.com</p>
    </div>
    <div class="bdsharebuttonbox bdshare-button-style1-32" data-bd-bind="1527750390322"><a href="http://localhost:8080/BlogJSPServlet2/index/index?page=1#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="http://localhost:8080/BlogJSPServlet2/index/index?page=1#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="http://localhost:8080/BlogJSPServlet2/index/index?page=1#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a><a href="http://localhost:8080/BlogJSPServlet2/index/index?page=1#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a><a href="http://localhost:8080/BlogJSPServlet2/index/index?page=1#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a><a href="http://localhost:8080/BlogJSPServlet2/index/index?page=1#" class="bds_more" data-cmd="more"></a></div>


    <div class="tj_news">
      <h2>
        <p class="tj_t1">最新文章</p>
      </h2>
      <ul>

        <li><a href="ArticleDetailServlet?id=1">鼠标悬停图片、文字css3效果</a></li>

        <li><a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></li>

        <li><a href="ArticleDetailServlet?id=4">HTML5技术将推动移动浏览器变革</a></li>

        <li><a href="ArticleDetailServlet?id=5">css3制作3D图书翻页效果</a></li>

        <li><a href="ArticleDetailServlet?id=7">使用css3伪元素制作时间轴并且实现鼠标选中高亮效果</a></li>

      </ul>
      <h2>
        <p class="tj_t2">推荐文章</p>
      </h2>
      <ul>

        <li><a href="ArticleDetailServlet?id=2">鼠标悬停图片、文字css3效果</a></li>

        <li><a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></li>

        <li><a href="ArticleDetailServlet?id=7">CSS3动画_liffect effect</a></li>

      </ul>
    </div>
    <div class="links">
      <h2>
        <p>友情链接</p>
      </h2>
      <ul>
        <li><a href="MeServlet">个人博客</a></li>
        <li><a href="http://user.qzone.qq.com/1481184032">QQ空间</a></li>
      </ul>
    </div>

    <div class="copyright">
      <ul>
        <p> Design by <a href="IndexFirstServlet">pluto</a></p>
        <p></p>
        <p></p>
      </ul>
    </div>
  </aside>
  <script src="../../index_files/silder.js.下载"></script>
  <div class="clear"></div>
  <!-- 清除浮动 -->
</div>


</body></html>

about.jsp

<%--
  Created by IntelliJ IDEA.
  User: 辉弟
  Date: 2019/9/8
  Time: 8:34
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0049)http://localhost:8080/BlogJSPServlet2/about/about -->
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>个人博客——关于我</title>
    <meta name="keywords" content="个人博客模板,博客模板,响应式">
    <meta name="description" content="如影随形主题的个人博客模板,神秘、俏皮。">
    <link href="../../about_files/base.css" rel="stylesheet">
    <link href="../../about_files/about.css" rel="stylesheet">
    <link href="../../about_files/media.css" rel="stylesheet">
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
    <!--[if lt IE 9]>
    <script src="../include/js/modernizr.js"></script>
    <![endif]-->
    <script src="../../about_files/share.js.下载"></script><link rel="stylesheet" href="../../about_files/share_style1_32.css">
</head>
<body>
<div class="ibody">
    <header>
        <h1>提拉米苏.甜腻的苦涩</h1>
        <h2>做好的提拉米苏被遗忘在角落 我的手再也挽留不住你离去的脚步 爱情是甜蜜的苦涩,无奈的别离 苦涩的怕不是味道,而是心绪</h2>
        <div class="logo"><a href="IndexFirstServlet"></a></div>

        <nav id="topnav">
            <a href="IndexFirstServlet">首页</a>
            <a href="MeServlet"  id="topnav_current">关于我</a>
            <a href="ArticleFirstServlet">慢生活</a>
            <a href="AlbumFindServlet">我的相册</a>
            <a href="CritiqueFirstFindServlet">留言板</a>
        </nav>
    </header>
    <article>
        <h3 class="about_h">您现在的位置是:<a href="IndexServlet">首页</a><a href="MeServlet">关于我</a></h3>
        <div class="about">
            <h2>Just about me</h2>
            <ul>
                <c:forEach items="${mes}" var="me">
                    ${me.content}
                </c:forEach>
            </ul>
            <h2>About my blog</h2>
            <ul class="blog_a">
                <p>域  名:www.pluto.tk
                </p><p>服务器:京东云
            </p><p>程  序:原创程序</p>
                <p>微信公众号:pluto</p>
            </ul>
        </div>
    </article>
    <aside>

        <div class="avatar"><a href="MeServlet"><span>pluto</span></a></div>
        <div class="topspaceinfo">
            <h1>执子之手,与子偕老</h1>
            <p>于千万人之中,我遇见了我所遇见的人....</p>
        </div>
        <div class="about_c">
            <p>网名:pluto</p>
            <p>职业:Java程序员</p>
            <p>籍贯:广东-韶关</p>
            <p>QQ:1481184032</p>
            <p>邮箱:1481184032@qq.com</p>
        </div>
        <div class="bdsharebuttonbox bdshare-button-style1-32" data-bd-bind="1527750586617"><a href="http://localhost:8080/BlogJSPServlet2/about/about#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="http://localhost:8080/BlogJSPServlet2/about/about#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="http://localhost:8080/BlogJSPServlet2/about/about#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a><a href="http://localhost:8080/BlogJSPServlet2/about/about#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a><a href="http://localhost:8080/BlogJSPServlet2/about/about#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a><a href="http://localhost:8080/BlogJSPServlet2/about/about#" class="bds_more" data-cmd="more"></a></div>


    </aside>
    <script src="../../about_files/silder.js.下载"></script>
    <div class="clear"></div>
    <!-- 清除浮动 -->
</div>


</body></html>

article.jsp(文章区)

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%--
  Created by IntelliJ IDEA.
  User: 辉弟
  Date: 2019/9/8
  Time: 8:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0053)http://localhost:8080/BlogJSPServlet2/article/article -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>个人博客——jim</title>
    <meta name="keywords" content="个人博客,博客,响应式">
    <meta name="description" content="如影随形主题的个人博客,神秘、俏皮。">
    <link href="../../article_files/base.css" rel="stylesheet">
    <link href="../../article_files/style.css" rel="stylesheet">
    <link href="../../article_files/media.css" rel="stylesheet">
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
    <!--[if lt IE 9]>
    <script src="include/js/modernizr.js"></script>
    <![endif]-->
    <script src="./article_files/share.js.下载"></script><link rel="stylesheet" href="./article_files/share_style1_32.css"></head>
<body>
<div class="ibody">
    <header>
        <h1>提拉米苏.甜腻的苦涩</h1>
        <h2>做好的提拉米苏被遗忘在角落 我的手再也挽留不住你离去的脚步 爱情是甜蜜的苦涩,无奈的别离 苦涩的怕不是味道,而是心绪</h2>
        <div class="logo"><a href="IndexFirstServlet"></a></div>

        <nav id="topnav">
            <a href="IndexFirstServlet" >首页</a>
            <a href="MeServlet">关于我</a>
            <a href="ArticleFirstServlet" id="topnav_current">慢生活</a>
            <a href="AlbumFindServlet">我的相册</a>
            <a href="CritiqueFirstFindServlet">留言板</a>
        </nav>
    </header>
    <article>
        <h2 class="about_h">您现在的位置是:<a href="IndexFirstServlet">首页</a><a href="ArticleFirstServlet">慢生活</a></h2>
        <div class="bloglist">
            <c:forEach items="${articles}" var="article">
            <div class="newblog">
                <ul>
                    <h3><a href="ArticleDetailServlet?id=${article.id}">${article.title}</a></h3>
                    <div class="autor"><span>作者:<a>${article.editer}</a></span><span>分类:[<a href="ArticleFirstServlet">${article.type}</a>]</span><span>浏览(<a href="ArticleFirstServlet">${article.count}</a></span><span>评论(<a href="ArticleFirstServlet">${article.count1}</a></span>
                        <span>
          </span></div>
                    <div class="content" style="width:100%">
                        ${article.content}
                        <ul>
                        </ul>

                    </div>
                    <a href="ArticleDetailServlet?id=3" class="readmore" style="display:inline-block;">全文</a>
                </ul>
                <figure><img src="${article.image}" width="200" height="100"></figure>
                <div class="dateview">${article.time}</div>
            </div>
            </c:forEach>
        </div>

        <div class="page">

            <c:if test="${currentpage==1}" var="result">
                <a href="#">&lt;</a>
            </c:if>
            <c:if test="${!result}">
                <a href="ArticleServlet?currentpage=${currentpage-1}">&lt;</a>
            </c:if>

            <b>${currentpage}</b>

            <c:if test="${currentpage == aend}" var="result2">
                <a href="#">&gt;</a>
            </c:if>
            <c:if test="${!result2}">
                <a href="ArticleServlet?currentpage=${currentpage+1}">&gt;</a>
            </c:if>


        </div>
    </article>
    <aside>
        <div class="rnav">
            <li class="rnav1 "><a href="ArticleFirstServlet">日记</a></li>
            <li class="rnav2 "><a href="ArticleFirstServlet">欣赏</a></li>
            <li class="rnav3 "><a href="ArticleFirstServlet">程序人生</a></li>
            <li class="rnav4 "><a href="ArticleFirstServlet">经典语录</a></li>
        </div>
        <div class="ph_news">
            <h2>
                <p>点击排行</p>
            </h2>
            <ul class="ph_n">

                1

                <li><span class="num1">
			      		      1
			      		   </span>
                    <a href="ArticleDetailServlet?id=2">
                        鼠标悬停图片、文字css3效果
                    </a>
                </li>



                2

                <li><span class="num1">
			      		      2
			      		   </span>
                    <a href="ArticleDetailServlet?id=3">
                        从摄影作品中获取网页颜色搭配技巧
                    </a>
                </li>



                3

                <li><span class="num1">
			      		      3
			      		   </span>
                    <a href="ArticleDetailServlet?id=7">
                        CSS3动画_liffect effect
                    </a>
                </li>



                4


                <li>
			      		   <span>
			      		       4
			      		   </span>
                    <a href="ArticleDetailServlet?id=4">
                        HTML5技术将推动移动浏览器变革
                    </a>
                </li>


                5


                <li>
			      		   <span>
			      		       5
			      		   </span>
                    <a href="ArticleDetailServlet?id=5">
                        css3制作3D图书翻页效果
                    </a>
                </li>


                6


                <li>
			      		   <span>
			      		       6
			      		   </span>
                    <a href="ArticleDetailServlet?id=7">
                        使用css3伪元素制作时间轴并且实现鼠标选中高亮效果
                    </a>
                </li>


            </ul>
            <h2>
                <p>栏目推荐</p>
            </h2>
            <ul>

                <li><a href="ArticleDetailServlet?id=2">鼠标悬停图片、文字css3效果</a></li>

                <li><a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></li>

                <li><a href="ArticleDetailServlet?id=7">CSS3动画_liffect effect</a></li>

            </ul>
            <h2>
                <p>最新评论</p>
            </h2>
            <ul class="pl_n">
                <c:forEach items="${critiques2}" var="critique">
                <dl>
                    <dt><img src="${critique.photo}"> </dt>
                    <dt> </dt>
                    <dd>周三
                        <time>${critique.time}</time>
                    </dd>
                    <dd>
                        <a href="ArticleFirstServlet">
                            ${critique.content}
                            <!--   <s:property value="content" escape="false"/>  -->
                        </a>
                    </dd>
                </dl>
                </c:forEach>
            </ul>
        </div>

        <div class="copyright">
            <ul>
                <p> Design by <a href="ArticleFirstServlet">pluto</a></p>
                <p></p>
                <p></p>
            </ul>
        </div>
    </aside>
    <script src="./article_files/silder.js.下载"></script>
    <div class="clear"></div>
    <!-- 清除浮动 -->
</div>


</body></html>

article_detail.jsp(小文章)

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%--
  Created by IntelliJ IDEA.
  User: 辉弟
  Date: 2019/9/8
  Time: 8:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0065)http://localhost:8080/BlogJSPServlet2/article/article_detail?id=2 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>个人博客——博客</title>
    <meta name="keywords" content="个人博客模板,博客模板,响应式">
    <meta name="description" content="如影随形主题的个人博客模板,神秘、俏皮。">
    <link href="../../article_detail_files/base.css" rel="stylesheet">
    <link href="../../article_detail_files/style.css" rel="stylesheet">
    <link href="../../article_detail_files/media.css" rel="stylesheet">
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
    <!--[if lt IE 9]>
    <script src="../include/js/modernizr.js"></script>
    <![endif]-->
    <script src="../../article_detail_files/share.js.下载"></script><link rel="stylesheet" href="../../article_detail_files/share_style1_32.css">
</head>
<body>
<div class="ibody">
    <header>
        <h1>提拉米苏.甜腻的苦涩</h1>
        <h2>做好的提拉米苏被遗忘在角落   我的手再也挽留不住你离去的脚步  爱情是甜蜜的苦涩,无奈的别离  苦涩的怕不是味道,而是心绪</h2>
        <div class="logo"><a href="IndexFirstServlet"></a></div>

        <nav id="topnav">
            <a href="IndexFirstServlet">首页</a>
            <a href="MeServlet">关于我</a>
            <a href="ArticleFirstServlet" id="topnav_current">慢生活</a>
            <a href="AlbumFindServlet">我的相册</a>
            <a href="CritiqueFirstFindServlet">留言板</a></nav>
    </header>
    <article>
        <h2 class="about_h">您现在的位置是:<a href="IndexFirstServlet">首页</a>&gt;<a href="ArticleFirstServlet">慢生活</a>&gt;<a href="ArticleDetailServlet?id=2">详细内容</a></h2>
        <c:forEach items="${articles}" var="article">
        <div class="index_about">

            <h2 class="c_titile">${article.title}</h2>
            <p class="box_c"><span class="d_time">发布时间:${article.time}</span><span>编辑:${article.editer}</span><span>浏览(${article.count})</span><span>评论(${article.count1})</span></p>
            <ul class="infos">
                <p><span style="color:rgb(102, 102, 102); font-family:宋体,arial,helvetica,sans-serif; font-size:14px">&nbsp; &nbsp; 其实这样的效果也很常见,但是我平时用到很少,在其他网站看到这样的效果,第一反应就是查看源代码,看他怎么运用的,结果用了很多的div,最主要的是用js来实现。目前很多浏览器也都兼容css3新属性,这个例子就可以使用rgba(0,0,0,0.5)、opacity、当然关键也要看怎么定位,还是会用到position属性。</span></p>

                <p><span style="color:rgb(102, 102, 102); font-family:宋体,arial,helvetica,sans-serif; font-size:14px">&nbsp;&nbsp;&nbsp;</span></p>

                <p>Html:</p>

                <div class="shili" style="margin: 0px; padding: 10px; background-color: rgb(245, 245, 245); border: 1px dotted rgb(119, 136, 85); word-wrap: break-word;">
                    ${article.content}
                </div>

                <p>CSS代码片段:</p>

                <div class="shili" style="margin: 0px; padding: 10px; background-color: rgb(245, 245, 245); border: 1px dotted rgb(119, 136, 85); word-wrap: break-word;">
                    <p>/* ex01 */</p>

                    <p>.ex01 li{ width:170px; float:left; margin:5px}</p>

                    <p>.ex01 li a { position:relative; display:block }</p>

                    <p>.ex01 li span{ position: absolute; left: 0px; bottom: 0px;color:#FFF; line-height:24px; display:block; width:170px; -webkit-transition: all 0.5s; -moz-transition: all 0.5s; -o-transition: all 0.5s; -ms-transition: all 0.5s; background:rgba(0,0,0,0.5); text-align:center}</p>

                    <p>.ex01 img { width: 170px; height: 120px; -webkit-transition: all 0.5s; -moz-transition: all 0.5s; -o-transition: all 0.5s; display:block}</p>

                    <p>.ex01 img:hover { -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -o-transform: scale(1.1); -ms-transform: scale(1.1); }</p>

                    <p>.ex01 li:hover span{ opacity:0}</p>

                    <p>/* ex02 */</p>

                    <p>.ex02 li{width:170px;margin:5px;float:left;}</p>

                    <p>.ex02 li img{width: 170px; height: 120px;display:block;}</p>

                    <p>.ex02 li span{ opacity:0}</p>

                    <p>.ex02 li:hover span{ opacity:1}</p>

                    <p>.ex02 li a { position:relative; display:block }</p>

                    <p>.ex02 li span{ position: absolute; left: 0px; top: 0px; background:rgba(0,0,0,0.5); color:#FFF; line-height:24px; display:block; width:170px;text-align:center;-webkit-transition: all 0.5s; -moz-transition: all 0.5s; -o-transition: all 0.5s; -ms-transition: all 0.5s; }</p>
                </div>

                <ul>
                </ul>

            </ul>
            <div class="keybq">
                <p><span>关键字词</span>:${article.keywords}</p>
                </c:forEach>
            </div>
            <div class="nextinfo">



                <p>下一篇:<a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></p>

            </div>
        </div>
    </article>
    <aside>
        <div class="rnav">
            <li class="rnav1 "><a href="ArticleFirstServlet">日记</a></li>
            <li class="rnav2 "><a href="ArticleFirstServlet">欣赏</a></li>
            <li class="rnav3 "><a href="ArticleFirstServlet">程序人生</a></li>
            <li class="rnav4 "><a href="ArticleFirstServlet">经典语录</a></li>
        </div>
        <div class="ph_news">
            <h2>
                <p>点击排行</p>
            </h2>
            <ul class="ph_n">

                1

                <li><span class="num1">
			      		      1
			      		   </span>
                    <a href="ArticleDetailServlet?id=2">
                        鼠标悬停图片、文字css3效果
                    </a>
                </li>



                2

                <li><span class="num1">
			      		      2
			      		   </span>
                    <a href="ArticleDetailServlet?id=3">
                        从摄影作品中获取网页颜色搭配技巧
                    </a>
                </li>



                3

                <li><span class="num1">
			      		      3
			      		   </span>
                    <a href="ArticleDetailServlet?id=7">
                        CSS3动画_liffect effect
                    </a>
                </li>



                4


                <li>
			      		   <span>
			      		       4
			      		   </span>
                    <a href="ArticleDetailServlet?id=4">
                        HTML5技术将推动移动浏览器变革
                    </a>
                </li>


                5


                <li>
			      		   <span>
			      		       5
			      		   </span>
                    <a href="ArticleDetailServlet?id=5">
                        css3制作3D图书翻页效果
                    </a>
                </li>


                6


                <li>
			      		   <span>
			      		       6
			      		   </span>
                    <a href="ArticleDetailServlet?id=7">
                        使用css3伪元素制作时间轴并且实现鼠标选中高亮效果
                    </a>
                </li>


            </ul>
            <h2>
                <p>栏目推荐</p>
            </h2>
            <ul>

                <li><a href="ArticleDetailServlet?id=2">鼠标悬停图片、文字css3效果</a></li>

                <li><a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></li>

                <li><a href="ArticleDetailServlet?id=7">CSS3动画_liffect effect</a></li>

            </ul>
            <h2>
                <p>最新评论</p>
            </h2>
            <ul class="pl_n">

                <dl>
                    <dt><img src="../../article_detail_files/s8.jpg"> </dt>
                    <dt> </dt>
                    <dd>周三
                        <time>2018-05-30</time>
                    </dd>
                    <dd>
                        <a href="ArticleDetailServlet?id=2#">
                            今天真热!
                            <!--   <s:property value="content" escape="false"/>  -->
                        </a>
                    </dd>
                </dl>
            </ul>
        </div>

        <div class="copyright">
            <ul>
                <p> Design by <a href="ArticleServlet">jim</a></p>
                <p></p>
                <p></p>
            </ul>
        </div>
    </aside>
    <script src="../../article_detail_files/silder.js.下载"></script>
    <div class="clear"></div>
    <!-- 清除浮动 -->
</div>


</body></html>

album.jsp(相册)

<%--
  Created by IntelliJ IDEA.
  User: 辉弟
  Date: 2019/9/8
  Time: 8:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0049)http://localhost:8080/BlogJSPServlet2/album/album -->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>个人博客——相册</title>
    <meta name="keywords" content="个人博客模板,博客模板,响应式">
    <meta name="description" content="如影随形主题的个人博客模板,神秘、俏皮。">
    <link href="../../album_files/base.css" rel="stylesheet">
    <link href="../../album_files/style.css" rel="stylesheet">
    <link href="../../album_files/media.css" rel="stylesheet">
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
    <!--[if lt IE 9]>
    <script src="js/modernizr.js"></script>
    <![endif]-->
    <script src="../../album_files/share.js.下载"></script><link rel="stylesheet" href="../../album_files/share_style1_32.css"></head>
<body>
<div class="ibody">
    <header>
        <h1>提拉米苏.甜腻的苦涩</h1>
        <h2>做好的提拉米苏被遗忘在角落 我的手再也挽留不住你离去的脚步 爱情是甜蜜的苦涩,无奈的别离 苦涩的怕不是味道,而是心绪</h2>
        <div class="logo"><a href="IndexFirstServlet"></a></div>

        <nav id="topnav">
            <a href="IndexFirstServlet" >首页</a>
            <a href="MeServlet">关于我</a>
            <a href="ArticleFirstServlet">慢生活</a>
            <a href="AlbumFindServlet"  id="topnav_current">我的相册</a>
            <a href="CritiqueFirstFindServlet">留言板</a>
        </nav>
    </header>
    <article>
        <h2 class="about_h">您现在的位置是:<a href="IndexFirstServlet">首页</a><a href="AlbumFindServlet">相册</a></h2>
        <div class="template">
            <h3>
                <p><span>个人相册</span></p>
                <a href="AlbumFindServlet" class="more"></a> </h3>
            <ul>

                <!-- ../article/article_detail -->
                <li><a href="AlbumDetailServlet?album=1"><img src="../../album_files/1.jpg" "=""></a><span>第一个相册</span></li>

                <!-- ../article/article_detail -->
                <li><a href="AlbumDetailServlet?album=2"><img src="../../album_files/002.jpg" "=""></a><span>第二个相册</span></li>

            </ul>
            <h3>
                <p><span>最新评论</span></p>
            </h3>
            <ul class="pl_n">
                <c:forEach items="${critiques}" var="critique">
                <dl>
                    <dt><img src="${critique.photo}"> </dt>
                    <dt> </dt>
                    <dd>周三
                        <time>${critique.time}</time>
                    </dd>
                    <dd>
                        <a href="AlbumFindServlet">
                            ${critique.content}
                            <!--   <s:property value="content" escape="false"/>  -->
                        </a>
                    </dd>
                </dl>
                </c:forEach>
            </ul>
        </div></article>
    <aside>
        <div class="rnav">
            <li class="rnav1 "><a href="IndexFirstServlet">个人博客</a></li>
            <li class="rnav2 "><a href="http://user.qzone.qq.com/657682618">QQ空间</a></li>
            <li class="rnav3 "><a href="AlbumFindServlet">个人作品</a></li>
            <li class="rnav4 "><a href="AlbumFindServlet">原创程序</a></li>
        </div>
        <div class="ph_news">
            <h2>
                <p>点击排行</p>
            </h2>
            <ul class="ph_n">

                1

                <li><span class="num1">
			      		      1
			      		   </span>
                    <a href="ArticleDetailServlet?id=2">
                        鼠标悬停图片、文字css3效果
                    </a>
                </li>



                2

                <li><span class="num1">
			      		      2
			      		   </span>
                    <a href="ArticleDetailServlet?id=3">
                        从摄影作品中获取网页颜色搭配技巧
                    </a>
                </li>



                3

                <li><span class="num1">
			      		      3
			      		   </span>
                    <a href="ArticleDetailServlet?id=7">
                        CSS3动画_liffect effect
                    </a>
                </li>



                4


                <li>
			      		   <span>
			      		       4
			      		   </span>
                    <a href="ArticleDetailServlet?id=4">
                        HTML5技术将推动移动浏览器变革
                    </a>
                </li>


                5


                <li>
			      		   <span>
			      		       5
			      		   </span>
                    <a href="ArticleDetailServlet?id=5">
                        css3制作3D图书翻页效果
                    </a>
                </li>


                6


                <li>
			      		   <span>
			      		       6
			      		   </span>
                    <a href="ArticleDetailServlet?id=6">
                        使用css3伪元素制作时间轴并且实现鼠标选中高亮效果
                    </a>
                </li>


            </ul>



            <h2>
                <p>栏目推荐</p>
            </h2>
            <ul>

                <li><a href="ArticleDetailServlet?id=2">鼠标悬停图片、文字css3效果</a></li>

                <li><a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></li>

                <li><a href="ArticleDetailServlet?id=7">CSS3动画_liffect effect</a></li>

            </ul>
        </div>

        <div class="copyright">
            <ul>
                <p> Design by <a href="AlbumFindServlet">jim</a></p>
                <p></p>
                <p></p>
            </ul>
        </div>
    </aside>
    <script src="../../album_files/silder.js.下载"></script>
    <div class="clear"></div>
    <!-- 清除浮动 -->
</div>


</body></html>

album_detail.jsp(小相册)

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%--
  Created by IntelliJ IDEA.
  User: 辉弟
  Date: 2019/9/8
  Time: 8:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0061)http://localhost:8080/BlogJSPServlet2/album/album_detail?id=1 -->
<html xmlns="http://www.w3.org/1999/xhtml" class=" js csstransforms csstransforms3d csstransitions">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1,text/html; charset=utf-8">
    <link rel="shortcut icon" href="http://localhost:8080/BlogJSPServlet2/favicon.ico">
    <title>个人博客——照片</title>
    <meta name="keywords" content="个人博客模板,博客模板,响应式">
    <meta name="description" content="如影随形主题的个人博客模板,神秘、俏皮。">
    <link href="../../album_detail_files/base.css" rel="stylesheet">
    <link href="../../album_detail_files/style.css" rel="stylesheet">
    <link href="../../album_detail_files/media.css" rel="stylesheet">
    <script type="text/javascript" src="../../album_detail_files/jquery.min.js.下载"></script>
    <script type="text/javascript" src="../../album_detail_files/jquery.gallery.js.下载"></script>
    <script type="text/javascript" src="../../album_detail_files/modernizr.custom.53451.js.下载"></script>
    <meta name="viewport" content="width=device-width, minimum-scale=1.0,initial-scale=1.0,maximum-scale=1.0">
    <!--[if lt IE 9]>
    <script src="../include/js/modernizr.js"></script>
    <![endif]-->
    <script src="../../album_detail_files/share.js.下载"></script><link rel="stylesheet" href="../../album_detail_files/share_style1_32.css"></head>
<body>
<div class="ibody">
    <header>
        <h1>提拉米苏.甜腻的苦涩</h1>
        <h2>做好的提拉米苏被遗忘在角落 我的手再也挽留不住你离去的脚步 爱情是甜蜜的苦涩,无奈的别离 苦涩的怕不是味道,而是心绪</h2>
        <div class="logo"><a href="http://localhost:8080/BlogJSPServlet2/index/index"></a></div>

        <nav id="topnav">
            <a href="IndexFirstServlet" >首页</a>
            <a href="MeServlet">关于我</a>
            <a href="ArticleFirstServlet">慢生活</a>
            <a href="AlbumFindServlet" id="topnav_current">我的相册</a>
            <a href="CritiqueFirstFindServlet">留言板</a>
        </nav>
    </header>
    <article>
        <h2 class="about_h">您现在的位置是:<a href="IndexFirstServlet">首页</a>&gt;<a href="AlbumFindServlet">个人相册</a>&gt;<a href="AlbumDetailServlet?album=1">照片</a></h2>
        <div class="template">
            <h3>
                <p><span>个人相册</span></p>
            </h3>
            <ul>
                <div class="container">
                    <section id="dg-container" class="dg-container">
                        <div class="dg-wrapper">
                            <c:forEach items="${photos}" var="photo">
                            <a href="AlbumDetailServlet?album=1" class="dg-center" style="opacity: 1; visibility: visible;"><img src="${photo.image}" width="480px" height="260px">
                                <div>${photo.note}</div>
                            </a>
                            </c:forEach>
                        </div>

                        <nav>
					<span class="dg-prev">
					      &lt;
				    </span>
                            <span class="dg-next">
					    &gt;
				    </span>
                        </nav>



                    </section>
                </div>

                <script type="text/javascript">
                    $(function() {
                        $('#dg-container').gallery();
                    });
                </script>
            </ul>
            <h3>
                <p><span>最新评论</span></p>
            </h3>
            <ul class="pl_n">
                <c:forEach items="${critiques}" var="critique">
                <dl>
                    <dt><img src="../../album_detail_files/s8.jpg"> </dt>
                    <dt> </dt>
                    <dd>周三
                        <time>${critique.time}</time>
                    </dd>
                    <dd>
                        <a href="AlbumDetailServlet?album=1">
                            ${critique.content}
                        </a>
                    </dd>
                </dl>
                </c:forEach>
            </ul>

        </div></article>
    <aside>
        <div class="rnav">
            <li class="rnav1 "><a href="IndexFirstServlet">个人博客</a></li>
            <li class="rnav2 "><a href="http://user.qzone.qq.com/1481184032">QQ空间</a></li>
            <li class="rnav3 "><a href="AlbumFindServlet">个人作品</a></li>
            <li class="rnav4 "><a href="AlbumFindServlet">原创程序</a></li>
        </div>
        <div class="ph_news">
            <h2>
                <p>点击排行</p>
            </h2>
            <ul class="ph_n">


                <li><span class="num1">
			      		      1
			      		   </span>
                    <a href="ArticleDetailServlet?id=2">
                        鼠标悬停图片、文字css3效果
                    </a>
                </li>




                <li><span class="num1">
			      		      2
			      		   </span>
                    <a href="ArticleDetailServlet?id=3">
                        从摄影作品中获取网页颜色搭配技巧
                    </a>
                </li>




                <li><span class="num1">
			      		      3
			      		   </span>
                    <a href="ArticleDetailServlet?id=7">
                        CSS3动画_liffect effect
                    </a>
                </li>





                <li>
			      		   <span>
			      		       4
			      		   </span>
                    <a href="ArticleDetailServlet?id=4">
                        HTML5技术将推动移动浏览器变革
                    </a>
                </li>




                <li>
			      		   <span>
			      		       5
			      		   </span>
                    <a href="ArticleDetailServlet?id=5">
                        css3制作3D图书翻页效果
                    </a>
                </li>




                <li>
			      		   <span>
			      		       6
			      		   </span>
                    <a href="ArticleDetailServlet?id=6">
                        使用css3伪元素制作时间轴并且实现鼠标选中高亮效果
                    </a>
                </li>


            </ul>
            <h2>
                <p>栏目推荐</p>
            </h2>
            <ul>

                <li><a href="ArticleDetailServlet?id=2">鼠标悬停图片、文字css3效果</a></li>

                <li><a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></li>

                <li><a href="ArticleDetailServlet?id=7">CSS3动画_liffect effect</a></li>

            </ul>

            <div class="copyright">
                <ul>
                    <p> Design by <a href="ArticleDetailServlet?id=1#">jim</a></p>
                    <p></p>
                    <p></p>
                </ul>
            </div>
        </div></aside>
    <script src="../../album_detail_files/silder.js.下载"></script>
    <div class="clear"></div>
    <!-- 清除浮动 -->
</div>


</body></html>

critique.jsp(评论)

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@page import="com.bbx.entity.Critique" %>
<%@page import="java.util.List" %>
<%@page import="com.bbx.servlet.CritiqueFirstFindServlet" %>
<%@page import="com.bbx.servlet.CritiqueFindServlet"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0055)http://localhost:8080/BlogJSPServlet2/critique/critique -->
<html xmlns="http://www.w3.org/1999/xhtml" class=" js csstransforms csstransforms3d csstransitions">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1,text/html; charset=utf-8">
    <link rel="shortcut icon" href="http://localhost:8080/BlogJSPServlet2/favicon.ico">
    <title>个人博客——留言板</title>
    <meta name="keywords" content="个人博客模板,博客模板,响应式">
    <meta name="description" content="如影随形主题的个人博客模板,神秘、俏皮。">
    <link href="../../critique_files/base.css" rel="stylesheet">
    <link href="../../critique_files/style.css" rel="stylesheet">
    <link href="../../critique_files/media.css" rel="stylesheet">
    <script type="text/javascript" src="../../critique_files/jquery.min.js.下载"></script>
    <script type="text/javascript" src="../../critique_files/jquery.gallery.js.下载"></script>
    <script type="text/javascript" src="../../critique_files/modernizr.custom.53451.js.下载"></script>
    <script type="text/javascript" src="../../critique_files/ckeditor.js.下载"></script>
    <style>.cke {
        visibility: hidden;
    }</style>
    <meta name="viewport" content="width=device-width, minimum-scale=1.0,initial-scale=1.0,maximum-scale=1.0">
    <!--[if lt IE 9]>
    <script src="../include/js/modernizr.js"></script>
    <![endif]-->
    <script src="../critique_files/share.js.下载"></script>
    <link rel="stylesheet" href="../critique_files/share_style1_32.css">
</head>
<body>
<div class="ibody">
    <header>
        <h1>提拉米苏.甜腻的苦涩</h1>
        <h2>做好的提拉米苏被遗忘在角落 我的手再也挽留不住你离去的脚步 爱情是甜蜜的苦涩,无奈的别离 苦涩的怕不是味道,而是心绪</h2>
        <div class="logo"><a href="IndexFirstServlet"></a></div>

        <nav id="topnav">
            <a href="IndexFirstServlet">首页</a>
            <a href="MeServlet">关于我</a>
            <a href="ArticleFirstServlet">慢生活</a>
            <a href="AlbumFindServlet">我的相册</a>
            <a href="CritiqueFirstFindServlet" id="topnav_current">留言板</a>
        </nav>


    </header>
    <article>
        <h2 class="about_h">您现在的位置是:<a href="IndexFirstServlet">首页</a>&gt;<a href="CritiqueFindServlet">留言板</a></h2>
        <div class="template">

            <h3>
                <p><span>最新留言</span></p>
            </h3>
            <ul class="pl_n">
                <c:forEach items="${critiques}" var="critique">
                    <dl>
                        <dt><img src="${critique.photo}"></dt>
                        <dt></dt>
                        <dd>
                            <table align="left" width="200">
                                <tbody>
                                <tr>
                                    <td width="80">${critique.name}</td>
                                    <td>${critique.time}</td>
                                </tr>
                                </tbody>
                            </table>
                        </dd>
                        <dd>
                            <a href="CritiqueFirstFindServlet">
                                    ${critique.content}
                                <!--   <s:property value="content" escape="false"/>  -->
                            </a>
                        </dd>
                    </dl>
                </c:forEach>
            </ul>


            <div class="page">


                <c:if test="${currentpage==1}" var="result">
                    <a href="#">&lt;</a>
                </c:if>
                <c:if test="${!result}">
                    <a href="CritiqueFindServlet?currentpage=${currentpage-1}">&lt;</a>
                </c:if>

                <b>${currentpage}</b>

                <c:if test="${currentpage==cend}" var="result2">
                    <a href="#">&gt;</a>
                </c:if>
                <c:if test="${!result2}">
                    <a href="CritiqueFindServlet?currentpage=${currentpage+1}">&gt;</a>
                </c:if>

            </div>


            <h3>
                <p><span>随便说说</span></p>
                <a href="CritiqueFirstFindServlet" target="_blank" class="more"></a>
            </h3>
            <form action="CritiqueInsertServlet" method="get">
                <table>
                    <tbody>
                    <tr>
                        <td><span>您的姓名:</span></td>
                        <td><input name="name"></td>
                    </tr>
                    <tr>
                        <td>
                            <div style="width:70px;padding-bottom: 189px;"><span>留言内容:</span></div>
                        </td>
                        <td><textarea name="content" style="height:200px; width:630px;"></textarea></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>
                            <button type="submit" style="width: 60px;height: 30px;font-size: larger;">提交</button>
                        </td>
                    </tr>
                    </tbody>
                </table>
            </form>
        </div>
    </article>
    <aside>
        <div class="rnav">
            <li class="rnav1 "><a href="IndexFirstServlet">个人博客</a></li>
            <li class="rnav2 "><a href="http://user.qzone.qq.com/1481184032">QQ空间</a></li>
            <li class="rnav3 "><a href="CritiqueFirstFindServlet">个人作品</a></li>
            <li class="rnav4 "><a href="CritiqueFirstFindServlet">随便逛逛</a></li>
        </div>
        <div class="ph_news">
            <h2>
                <p>点击排行</p>
            </h2>
            <ul class="ph_n">

                1

                <li><span class="num1">
			      		      1
			      		   </span>
                    <a href="ArticleDetailServlet?id=2">
                        鼠标悬停图片、文字css3效果
                    </a>
                </li>


                2

                <li><span class="num1">
			      		      2
			      		   </span>
                    <a href="ArticleDetailServlet?id=3">
                        从摄影作品中获取网页颜色搭配技巧
                    </a>
                </li>


                3

                <li><span class="num1">
			      		      3
			      		   </span>
                    <a href="ArticleDetailServlet?id=7">
                        CSS3动画_liffect effect
                    </a>
                </li>


                4


                <li>
			      		   <span>
			      		       4
			      		   </span>
                    <a href="ArticleDetailServlet?id=4">
                        HTML5技术将推动移动浏览器变革
                    </a>
                </li>


                5


                <li>
			      		   <span>
			      		       5
			      		   </span>
                    <a href="ArticleDetailServlet?id=5">
                        css3制作3D图书翻页效果
                    </a>
                </li>


                6


                <li>
			      		   <span>
			      		       6
			      		   </span>
                    <a href="ArticleDetailServlet?id=6">
                        使用css3伪元素制作时间轴并且实现鼠标选中高亮效果
                    </a>
                </li>


            </ul>
            <h2>
                <p>栏目推荐</p>
            </h2>
            <ul>

                <li><a href="ArticleDetailServlet?id=2">鼠标悬停图片、文字css3效果</a></li>

                <li><a href="ArticleDetailServlet?id=3">从摄影作品中获取网页颜色搭配技巧</a></li>

                <li><a href="ArticleDetailServlet?id=7">CSS3动画_liffect effect</a></li>

            </ul>

            <div class="copyright">
                <ul>
                    <p> Design by <a href="CritiqueFirstFindServlet"></a>pluto</p>
                    <p></p>
                    <p></p>
                </ul>
            </div>
        </div>
    </aside>
    <script src="../critique_files/silder.js.下载"></script>
    <div class="clear"></div>
    <!-- 清除浮动 -->
</div>


</body>
</html>

web.xml文件
每次创建完一个servlet,就要记得加该servlet的映射

<?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>CritiqueFindServlet</servlet-name>
        <servlet-class>com.bbx.servlet.CritiqueFindServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CritiqueFindServlet</servlet-name>
        <url-pattern>/CritiqueFindServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>CritiqueInsertServlet</servlet-name>
        <servlet-class>com.bbx.servlet.CritiqueInsertServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CritiqueInsertServlet</servlet-name>
        <url-pattern>/CritiqueInsertServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>AlbumFindServlet</servlet-name>
        <servlet-class>com.bbx.servlet.AlbumFindServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AlbumFindServlet</servlet-name>
        <url-pattern>/AlbumFindServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>AlbumDetailServlet</servlet-name>
        <servlet-class>com.bbx.servlet.AlbumDetailServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AlbumDetailServlet</servlet-name>
        <url-pattern>/AlbumDetailServlet</url-pattern>
    </servlet-mapping>

    <servlet>
    <servlet-name>MeServlet</servlet-name>
    <servlet-class>com.bbx.servlet.MeServlet</servlet-class>
</servlet>
    <servlet-mapping>
        <servlet-name>MeServlet</servlet-name>
        <url-pattern>/MeServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>ArticleServlet</servlet-name>
        <servlet-class>com.bbx.servlet.ArticleServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ArticleServlet</servlet-name>
        <url-pattern>/ArticleServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>ArticleDetailServlet</servlet-name>
        <servlet-class>com.bbx.servlet.ArticleDetailServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ArticleDetailServlet</servlet-name>
        <url-pattern>/ArticleDetailServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>IndexServlet</servlet-name>
        <servlet-class>com.bbx.servlet.IndexServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>IndexServlet</servlet-name>
        <url-pattern>/IndexServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>CritiqueFirstFindServlet</servlet-name>
        <servlet-class>com.bbx.servlet.CritiqueFirstFindServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CritiqueFirstFindServlet</servlet-name>
        <url-pattern>/CritiqueFirstFindServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>ArticleFirstServlet</servlet-name>
        <servlet-class>com.bbx.servlet.ArticleFirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ArticleFirstServlet</servlet-name>
        <url-pattern>/ArticleFirstServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>IndexFirstServlet</servlet-name>
        <servlet-class>com.bbx.servlet.IndexFirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>IndexFirstServlet</servlet-name>
        <url-pattern>/IndexFirstServlet</url-pattern>
    </servlet-mapping>
</web-app>
  • 11
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值