小白学习Java第三十六天

复习:

jsp:  java 服务页面,用于响应数据,展示数据。

     内容: html(css/js/jQuery)   java  (Servlet)

使用:

  1. 指令  page、include、taglib
  2. 内置对象

      域对象:pageContext、request、session、application

  1. el表达式和jstl标签库

     ${域对象名.绑定名}

     jstl标签库:

       指令

     <c:if test=”${}”>

     <c:foreach items=”${}”  var=””>

     <c:set var=””  value=””>

今日内容

  1. 删除
  2. 文件上传
  3. 分页查询
  • 删除功能

功能分析:在index.jsp页面中单击删除超链接时,先进行友好的删除提示,如果确定要删除请求后台servelt进行删除操作。

 

 

dao:

 

service:

 

servlet:

 

  • 文件上传

上传操作必须要修改两个地方:

  1. 修改上传的表单,添加一个enctype属性,值必须是multipart/form-data

 

  1. 修改上传的servlet,添加一个注解

 

  1. 写上传代码

上传使用的是servlet3.0以上版本提供的Part对象:

part.getSize() //获取上传文件大小 

part.getSubmittedFileName()//获取上传文件的文件名 

part.write(path);//上传方法

封装上传工具类:

package com.ujiuye.utils;

import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

public class FileUploadUtils {
    public  static String uploadPic(Part part) throws IOException {
        //获取上传图片名
        String pic = part.getSubmittedFileName();
        //确定上传到服务器的哪个路径下
        String path = "E:/stupic";
        File file = new File(path);
        if (!file.exists()){
            //判断上传的路径是存在, 如果不存在则创建
            file.mkdir();
        }
        //上传操作:E:\stupic\1.jpg
        pic = UUID.randomUUID()+pic;
        part.write(path+"/"+ pic);
        return  pic;
    }
}

//添加学员
public void addStudent(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
    //获取页面传递过来数据
    String sname = req.getParameter("sname");
    String sex = req.getParameter("sex");
    String age = req.getParameter("age");
    String degree = req.getParameter("degree");
    String mark = req.getParameter("mark");
    //获取上传对象
    Part part = req.getPart("pic");
    //调用工具类中上传方法
    String pic = FileUploadUtils.uploadPic(part);
    //封装学生对象
    Student stu = new Student(sname,sex,Integer.parseInt(age),degree,pic,mark);
    //调用service层的添加方法
    int row = ss.addStudent(stu);
    PrintWriter out = resp.getWriter();
    //判断
    if(row > 0){
        //out.print("添加成功");
        //跳转到显示 列表页面
        resp.sendRedirect("student?method=findAllStudent");
    }else{
        //out.print("添加失败");
        resp.sendRedirect("addStudent.html");
    }
}

//修改学员
public void updateStudent(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //获取页面传递过来数据
    String sname = req.getParameter("sname");
    String sex = req.getParameter("sex");
    String age = req.getParameter("age");
    String degree = req.getParameter("degree");
    String pic = req.getParameter("oldpic");//旧头像
    String mark = req.getParameter("mark");
    String sid = req.getParameter("sid");
    //上传
    Part part = req.getPart("pic");
    //判断是否选择的新头像
    if(part.getSize()!=0){
        //调用上传工具类
        pic = FileUploadUtils.uploadPic(part);
    }
    //封装对象
    Student stu = new Student(Integer.parseInt(sid),sname,sex,Integer.parseInt(age),degree,pic,mark);
    //调用service
    int row = ss.updateStudent(stu);
    //判断
    if (row>0){
        resp.sendRedirect("student?method=findAllStudent");
    }
}

  • 主页显示头像
  1. 配置远程服务器存储图片的路径到tomcat(挂载服务器路径)

 

 

  1. 修改index.jsp页面中显示图片

 

 

  • 分页查询

为什么要使用分页?

减轻客户端和服务器端压力。

分析:分页查询中共涉及哪些变量

  1. totalCount 表中记录总数  select count(*) from student
  2. pageSize 页容量  自定义  可修改
  3. currentPage 当前页码  从页面中直接获取
  4. totalPage 总页数 

totalPage  =( totalCount %pageSize==0) ?( totalCount /pageSize ):( totalCount /pageSize+1 )

  1. startIndex 每页第一条记录的起始下标

startIndex = (currentPage -1)*pageSize

  1. prePage 上一页   currentPage -1
  2. nextPage 下一页   currentPage +1

封装分页查询的工具类

package com.ujiuye.utils;

import java.util.List;

public class PageUitls<T> {
    public PageUitls(int totalCount, int pageSize, String currentPage) {
        this.totalCount = totalCount;
        this.pageSize = pageSize;
        initCurrentPage(currentPage);
        initTotalPage();
        initStartIndex();
        initPrePage();
        initNextPage();
    }

    //给当前页码赋值
    private void initCurrentPage(String currentPage){
        if(currentPage==null){
            this.currentPage = 1;
        }else{
            this.currentPage = Integer.parseInt(currentPage);
        }
    }

    //计算总页数
    private  void initTotalPage(){
        this.totalPage = (totalCount%pageSize==0)?(totalCount/pageSize):(totalCount/pageSize+1);
    }
    //计算每页中第一条记录的超始下标
    private void initStartIndex(){
        this.startIndex = (currentPage-1)*pageSize;
    }
    //计算上一页
    private void initPrePage(){
        if(this.currentPage == 1){
            this.prePage = 1;
        }else{
            this.prePage = this.currentPage - 1;
        }
    }
    //下一页
    private  void initNextPage(){
        if(this.currentPage == this.totalPage){
            this.nextPage = this.totalPage;
        }else{
            this.nextPage = this.currentPage + 1;
        }
    }
    private int totalCount;//总记录数
    private int pageSize;//页容量
    private int currentPage;//当前页码
    private int totalPage;//总页数
    private  int startIndex;//每页第一条记录的起始下标
    private  int prePage;//上一页
    private  int nextPage;//下一页

    private List<T> list;//分页查询出来数据

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getPageSize() {
        return pageSize;
    }

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

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getStartIndex() {
        return startIndex;
    }

    public void setStartIndex(int startIndex) {
        this.startIndex = startIndex;
    }

    public int getPrePage() {
        return prePage;
    }

    public void setPrePage(int prePage) {
        this.prePage = prePage;
    }

    public int getNextPage() {
        return nextPage;
    }

    public void setNextPage(int nextPage) {
        this.nextPage = nextPage;
    }
}

使用工具类实现分页查询:

dao:

 

 

service:

 

 

servlet:

//查询全部学生信息
public void findAllStudent(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //获取总记录数
    int totalCount = ss.getTotalCount();
    //从页面获取当前页码
    String currentPage = req.getParameter("currentPage");
    //创建分页查询工具类对象
    PageUitls pu = new PageUitls(totalCount,5,currentPage);
    //调用serivce层查询方法
    List<Student> list = ss.findAllStudentByPage(pu);
    //将分页查询现来的数据保存到分页工具类对象的集合中
    pu.setList(list);
    //将分页工具类对象保存到域中
    req.setAttribute("pu",pu);
    //转发到index.jsp页面
    req.getRequestDispatcher("index.jsp").forward(req,resp);
}

页面:index.jsp

 

 

手动输入页码时,先判断页码范围是否合法,不合法给提示,合法跳转到后台做查询:

 

效果:

 

  • idea导入模块项目

 

在这里选择要导入的模块项目

 

如果是web项目,还需要设置项目类型

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值