JavaWeb:JSP(下)

JSP中有9 大内置对象(不能需要new 就可以使用)

servlet 常用的三个对象:是由tomcat容器创建的ServletRequest , ServletResponse,ServletContext

             out    输出 (向浏览器去写数据) 
             request 请求对象
             response 响应的 对象 (比较常用)
             session   会话
             application 全局对象(servletContext)
             page 当前页面的对象
             pageContext 上下文对象
             config  配置信息对象
             exception  异常对象

出现九个内置对象 是因为java带 html 混合在一起,需要做一些处理,所有产生这些内置对象,现在在开发里很少使用

四大内置对象的作用域 pageContext, request,session,application
公有两个方法:
setAttribute()设置值
getAttribute() 获取其值

        pageContext   作用域:只局限于在当前界面(其它界面获取不到值)
        request  作用域:   在服务器内部的请求中的数据都可以获取(只要没有重新请求)  
        session  随着窗口的打开而开始,窗口的关闭而结束   只要是在整个回话下都可以获取到  
        application 生命周期是随和服务器的开始而开始, 服务器的结束而结束   只要服务器开启就能够获取到取值    

  作用域的范围是:  pageContext<  request<session  application

  另一种获取方式是:requestScope 获取指定作用域下的值    

如果出现四个作用域下都存的同名的键,那么获取的方式是就近原则,从最小开始
         jsp 中动态标签库 
                <%--动态包含某个界面--%>
                <jsp:include page="welcome.jsp"></jsp:include> 包含
                <jsp:forward page="welcome.jsp"></jsp:forward> 转发的标签库

         时间的插件: My97 DatePicker 
                 ${pageContext.request.contextPath} 表示获取的项目web目录
                   <%--对时间进行格式化的标签库--%
                   <%@taglib prefix="fm" uri="http://java.sun.com/jsp/jstl/fmt" %>
                   <fm:formatDate pattern="yyyy" value="${register.createTime}">              </fm:formatDate>
                  pattern="yyyy"  表示格式化时间的格式 value是需要格式化时间的值

         使用的步骤:1.下载其文件             
                   2.新建js  把 下载的文件 与jquery 放入
                   3.在界面 引入js文件   首先必须引入jquery.js文件
                   4. 在需要引入的地方 onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"

在这里插入图片描述

        上传: ServletFileUpload 上传文件的核心的类   
            上传的基本步骤 
              1.导入第三方的jar包 加入依赖  上传的注意点:method="post"  enctype="multipart/form-data"   必须是这两点
              multipart/form-data:指定传输数据为二进制数据,例如图片、mp3、文件
              2.首页需要创建一个上传文件目录(文件夹)
              3.检验提交的格式是否合法 ServletFileUpload.isMultipartContent(req); 为true 表示合法
              4.实例化这个上传文件的核心类 ServletFileUpload servletFileUpload  = new ServletFileUpload(factory);
              5.得到所有form 表单的fileItme 集合
              6 得到每一个fileItem  然后判断每一个FileItem的类型 fileItem.isFormField() 如果是true 表示是文本类型,也就是不是文件
              7.获取文件的名称,构建一个文件对象
              8.构建一个完整的路径,写入到服务器   fileItem.write(f);
        注意点:  获取其文本的值: fileItem.getString("UTF-8")  数据库保存是保存的图片的路径(一般相对路径或者是文件都可以)

在这里插入图片描述

@WebServlet(name = "uploadServlet",urlPatterns = "/uploadServlet")
public class UploadServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //得到web-inf下的路径
        String path=req.getServletContext().getRealPath("/WEB-INF/upload");
        //构建一个File对象
        File file=new File(path);
        //判断这个文件是否存在
        if(!file.exists()){
            //创建这个文件
            file.mkdirs();
        }
        //ServletFileUpload上传文件的核心类
        //检验提交的格式是否合法(true为合法)
        boolean flag=ServletFileUpload.isMultipartContent(req);
        if(flag){
            //实例化工厂类
            FileItemFactory factory=new DiskFileItemFactory();
            //实例化这个核心对象
            ServletFileUpload servletFileUpload=new ServletFileUpload(factory);
            List<FileItem> fileItemList=null;
            try {
                fileItemList=servletFileUpload.parseRequest(req);
            } catch (FileUploadException e) {
                e.printStackTrace();
            }
            //把集合转化为迭代器
                Iterator<FileItem>fileItemIterator=fileItemList.iterator();
                while (fileItemIterator.hasNext()){
                    //获取具体的每一个元素
                    FileItem fileItem=fileItemIterator.next();
                    //判断是否为文本类型
                    if(fileItem.isFormField()){
                    
                    }else {
                        //获取文件的名称
                        String fileName=fileItem.getName();
                        File f=new File(file,fileName);
                        //把文件写入服务器里
                        try {
                            fileItem.write(f);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值