java web 学习

   一、部署项目打成war包

   二、虚拟目录 

   三、Servlet常见配置

        1、常用配置

        2、映射通配符

   四、Servlet三种创建方式

   五、Servlet线程安全问题

   六、Servlet获取配置信息

   七、ServletContext 

          1、域对象

                 存储局部

          2、获取全局配置信息 

                 存储全局          

          3、获取资源路径

                (1)配置文件在“WEB-INF”目录下

                (2)配置文件在“src”目录下

                (3)配置文件在包名目录下

                (4)请求转发

      八、HttpServletResponse响应

               (1)文字内容响应编码格式设置

               (2)文件下载响应格式设置

      九、HttpServletRequest请求

             1、参数解释

 

 

 

 

              

 

一、部署项目打成war包

        windows系统

      1、 进入到webRoot目录下,或者是webContent目录下

      2、打war包命令:jar -cvf myApp.war .          mac os系统:jar -cvf xxx.war *

      3、把war直接复制到   tomcat的webapps下,自动解压

      4、tomcat的webapps下有几个目录就代表有几个应用

 

         mac os系统:

         部署项目打成war包

         1.自动打包:

         File —> Project Structure —> Artifacts —> Add —> Web Application: Archive —> For ..war exploded

Build —> Build Artifacts… —> war —> Build

2.命令行打包:

进入要打包的项目目录:

cd /Users/yuukoiry/IdeaProjects/...

cd web/

打包命令:

jar -cvf xxx.war *

部署运行:

1.将war包复制到tomcat安装目录:/usr/local/apache-tomcat-9.0.0.M4/webapps/

2.终端操作:

cd /usr/local/apache-tomcat-9.0.0.M4/bin/

./startup.sh

3.打开浏览器:

http://localhost:8080/xxx/xx.jsp

 

           二、虚拟目录 

 

       修改:

 

  

 

             1、创建文件 

 

 

              2、粘贴到tomcat目录下

 

 

            三、Servlet常见配置

                  1、常用配置

 

 

                  2、映射通配符

 

 

 

 

 

    四、Servlet三种创建方式

         1、创建类继承Servlet

         2、适配器模式

              创建类继承GenericServlet

         3、模版方法设计模式

              创建类继承HttpServlet

 

   五、Servlet线程安全问题

         不要写全局变量,尽量写局部变量

 

   六、Servlet获取配置信息

 

         

 

 

 

 

 

 

   七、ServletContext 

          代表整个应用,一个应用只有一个ServletContext;

           获取:this.getServletContext()

          1、域对象

 

         2、获取全局配置信息 

 

 

      获取:

 

 

 

                  3、获取资源路径

                      (1)配置文件在“WEB-INF”目录下

       String path=  this.getServletConfig().getServletContext().getRealPath("/WEB-INF/a.properties");
       Properties pro=new Properties();
       pro.load(new FileInputStream(path));
       String value= pro.getProperty("key");
       System.out.println("配置文件中key相对的值="+value);

                 

 

                      (2)配置文件在“src”目录下

 String path=  this.getServletConfig().getServletContext().getRealPath("/WEB-INF/classes/a.properties");
       Properties pro=new Properties();
       pro.load(new FileInputStream(path));
       String value= pro.getProperty("key");
       System.out.println("配置文件中key相对的值="+value);

 

                     

                      (3)配置文件在包名目录下

  String path=  this.getServletConfig().getServletContext().getRealPath("/WEB-INF/classes/com/demo/servlet/a.properties");
       Properties pro=new Properties();
       pro.load(new FileInputStream(path));
       String value= pro.getProperty("key");
       System.out.println("配置文件中key相对的值="+value);

 

                      (4)请求转发

 this.getServletContext().getRequestDispatcher("/demo5").forward(request, response);//dmeo5是url-pattern的路径

 

 

         八、HttpServletResponse响应

 

             (1)文字内容响应编码格式设置            

    //服务器默认的编码为:ISO-8859-1,它不支持中文,tomcat规定的
        //设置服务器相应编码
        response.setCharacterEncoding("UTF-8");
        //告诉客户端使用什么编码方式
//        response.setContentType("text/html;charset=utf-8");
        response.setHeader("content-type", "text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        //客户端响应内容
        writer.write("你好,相应内容");

 

 

               (2)文件下载响应格式设置          

        /**
         * 文件下载
         */
        //通过路径得到一个输入流
        String realPath = this.config.getServletContext().getRealPath("/WEB-INF/classes/北京市道路停车电子收费集中缴费系统.jpg");
        FileInputStream fis=new FileInputStream(realPath);
    
        //创建字节输出流
        ServletOutputStream sos=response.getOutputStream();
         
        //得到要下载的文件名;
        String fileName = realPath.substring(realPath.lastIndexOf("/")+1);
         
        //设置图片名编码格式
        fileName=java.net.URLEncoder.encode(fileName,"UTF-8");

        //告诉客户端要下载文件,Content-Disposition控制是显示还是下载
        response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName ); 
        response.setContentType("application/octet-stream;charset=UTF-8"); 
        //response.setContentType("image/jpeg"); 

        //执行输出操作
        int len=1;
         byte[] b=new byte[1024];
         
         while ((len=fis.read(b))!=-1) {
             sos.write(b,0,len);
         }
         sos.close();
         fis.close();

 

      九、HttpServletRequest请求

               接口名称 http://localhost:8080/wxx_bdb/servletHome?name=10&age=20

           1、参数解释

              //获取请求方式
               System.out.println("获取请求方式:"+request.getMethod());
               //返回请求中的参数部分
               System.out.println("返回请求中的参数部分:"+request.getQueryString());
               //返回客户端发出请求时的完整URL
               System.out.println("返回客户端发出请求时的完整URL:"+request.getRequestURL());
               //返回请求中资源名部分
               System.out.println("返回请求中资源名部分:"+request.getRequestURI());
               //当前应用的虚拟目录
               System.out.println("当前应用的虚拟目录:"+request.getContextPath());
              //获取访问者的ip

                 System.out.println("域名:"+request.getRemoteHost());

               打印日志

获取请求方式:GET
返回请求中的参数部分:name=10&age=20
返回客户端发出请求时的完整URL:http://localhost:8080/wxx_bdb/servletHome
返回请求中资源名部分:/wxx_bdb/servletHome
当前应用的虚拟目录:/wxx_bdb

 

                获取请求头信息:

               //获取请求头信息
               Enumeration headerNames = request.getHeaderNames();
               while (headerNames.hasMoreElements()) {
                   String name = (String) headerNames.nextElement();
                   System.out.println("求头信息------"+name+":"+request.getHeader(name));
                }

 

                请求正文信息:

                     1.获取表单数据的相关方法:

                

              // 告诉服务器要使用什么编码,注:浏览器使用的是什么编码传过来的就是什么编码
               request.setCharacterEncoding("UTF-8");
               //得到对应名称的值
               String pwd = request.getParameter("pwd");
               //复选框提供的方法
               String[] values = request.getParameterValues("body");
               //得到表单获取的所有name
                Enumeration parameterNames = request.getParameterNames();
                //得到表单提交的所有值的方法,非常实用
                Map<String, String[]> parameterMap = request.getParameterMap();
                //以字节流的方式得到所有表单数据
                ServletInputStream inputStream = request.getInputStream();
               

 

 

 

 

posted @ 2020-06-16 22:40  张亚楠  阅读(201)  评论(0编辑  收藏  举报