• 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();
                   
  • 相关阅读:
    (1)MySQL初识
    ESP8266(WIFI模组)_Lua开发:环境搭建
    那些年写过的毕设论文
    单片机的心跳SysTick
    尝试
    菜单管理设计说明
    mybatis的mapper.xml中sql的用法
    powerdesigner
    Cookie
    java自定义注解
  • 原文地址:https://www.cnblogs.com/huihuizhang/p/13149649.html
Copyright © 2020-2023  润新知