zoukankan      html  css  js  c++  java
  • 170814-17关于javaweb的知识点

              1.   静态web项目、动态web项目区别
                                             WEB-INF
                                             lib
                                             classes
                                             web.xml
              2.  外部动态web项目
                       server.xml
                       <host>
                       <Context path="" docBase="" />
                       </host>

              3.  servlet快速入门!
                       1.servlet是web的三大组件之一;web的三大组件是指:Servlet、Filter、Listener
                       2.狭义的servlet:servlet
                       3.广义的servlet:凡是实现了servlet接口的类都称之为servlet!
              4.  如何快速定义一个servlet?
                       1.自定义实现类,实现servlet接口,实现接口就意味着实现servlet中的方法!
                       2.去web.xml中注册一

              5.  servlet的配置
                        <!-- 向服务器注册servlet -->
                       <servlet>
                          <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
                          <servlet-name>AServlet</servlet-name>
                          <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
                          <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
                       </servlet>
                       <!-- servlet-mapping做请求映射 -->
                       <servlet-mapping>
                           <servlet-name>AServlet</servlet-name>
                           <!-- 请求映射是通过这个url-pattern来实现的! -->
                           <url-pattern>/BServlet</url-pattern>
                           </servlet-mapping>
                  注意点:
                    1.<url-pattern>标签中指定的映射路径不必和<servlet-name>标签指定的内容保持一致!
                    2.只有你浏览器地址栏中请求的url和我们这里<url-pattern>标签中的映射一致的时候,我们自定义的servlet类才会处理这个请求! 

             6.  servlet生命周期

                     servlet是由tomcat服务器来管理的!
                     servlet生命周期:是指servlet对象由产生到销毁的过程!
                     servlet生命周期涉及的几个方法:
                            1.构造器方法:只会在第一次访问这个servlet的时候调用一次,调用一次就说明servlet是单例的,但是servlet是多线程的,非线程安全的,也就是说在servlet中我们尽量不要在service方法中操作全局变量!
                            2.init方法:init方法只会在第一次访问servlet的时候调用一次,对servlet对象进行初始化操作!
                            3.service:service方法会在每次访问这个servlet的时候都调用一次,而且我们的业务逻辑也是写在这个service方法!
                            4.destroy方法::destroy方法只会在我们的项目卸载的时候调用一次,也就是说在服务器关闭的时候会在服务器关闭的时候调用一次!    

              7.  ServletConfig

                     ServletConfig:是一个接口,一个ServletConfig对象只代表当前的servlet类的配置信息。
                            1) represent:
                                <servlet>
                                    <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
                                    <servlet-name>AServlet</servlet-name>
                                    <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
                                    <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
                                </servlet>
                             2).如何获取:
                                 由服务器创建,通过init方法的参数直接传递给我们,我们直接在init方法使用就可以了!
                             3)功能:
                                 getServletName():获取当前servlet-name值,也就是获取servletname
                                 getInitParameter("password"):获取servlet的初始化参数!
                                 getServletContext():获取当前web应用!
              8.  ServletContext

                               1) 代表:代表的是当前web应用,也就是指的web.xml文件中的信息!
                               2) 获取:通过ServletConfig对象的getServletContext()获取!
                               3) 功能:
                                          1)getInitParameter:获取整个web应用的初始化参数,也就是如下:
                                                  <context-param>
                                                       <param-name>user</param-name>
                                                       <param-value>lisi</param-value>
                                                  </context-param>
                                         2)获取资源的真实路径:getRealPath()
                                                  虚拟路径:http://localhost:8080/servlet-demo1/index.html   
                                                  真实路径:E:LHF teachermarsworkspaceservlet-demo1WebContentindex.html

                 9.  MyGenericServlet
                               1.定义一个抽象类实现servlet接口,保留service方法不去实现,其余方法都实现了!
                               2.自定义抽象类子类,在web.xml文件中注册一下这个子类!

                10.  HttpServlet 

    public class AServlet extends HttpServlet {  

         protected void doGet(HttpServletRequest request, HttpServletResponse response)

              throws ServletException, IOException {   

                   doPost(request,response);

            }

         protected void doPost(HttpServletRequest request, HttpServletResponse response)

               throws ServletException, IOException {  }

    }

                11.  HttpServletRequest

                           1) 代表:代表浏览器向服务器发送的请求报文
                           2) 获取:由tomcat服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法! 
                           3) 功能:
                                getParameter()获取请求参数
                                getContextPath():获取当前项目名
                                setAttribute/getAttribute:本身就是一个域对象!
                                request.getRequestDispatcher("1.html").forward(request, response);可以实现转发功能!         

                12.  HttpServletResponse
                          1) 代表:服务器响应给浏览器的响应报文
                          2) 获取:由服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!
                          3) 功能:
                                 response.getWriter().println("<h3>hello world!</h3>");可以返回给浏览器一个页面或者一个页面片段!
                                 response.sendRedirect("/servlet1/1.html"); :可以做请求的重定向

                13.  转发和重定向

                          转发:当浏览器向服务器发送请求的时候,服务器自己不处理,而是调用其它的web资源进行处理!

                          重定向:当浏览器向服务器发送请求的时候,服务器返回给浏览器一个特殊的响应,这个特殊的响应告诉浏览器再向另一个地址发送一个请求!    

                          转发和重定向的区别:        发生在浏览器端还是服务器    浏览器的请求次数       浏览器地址栏是否发生变化          浏览器是否能够感知到

                                     转发[request]                   发生在服务器端                            1                                      不发生变化                                     感知不到

                                     重定向[response]             发生在浏览器端                            2                                       发生变化                                      能感知到!  

                14.  编码问题分析
                           通信双方在进行通信的时候,实际上是将通信的内容【信息】是按照一定的规则转化为二进制进行通讯的
                           而这个一定的规则就是字符的编码:ascii,gb2312,gbk,iso8859-1,utf-8;
                           在请求到达的时候,另一方就需要解码!
                           乱码原因:
                                  通信双方的编码方式和解码方式不一致造成的,
                           解决办法:
                                  统一通信双方的编码方式和解码方式,都使用utf-8编码!
                           编码分类:
                                请求编码
                                       浏览器编码---》服务器解码iso8859-1 
                                响应编码
                                       服务器编码----》浏览器解码
                                服务器端默认使用的是iso8859-1编码,而浏览器默认使用的是gb2312,当然我们也可以在页面中告诉浏览器用什么编码方式!  
                15.  请求编码
                          get请求:
                               统一浏览器和服务器端的编码格式为utf-8编码:在server.xml文件的connector标签中指定编码格式为utf-8编码:URIEncoding="utf8"  
                          post请求!
                               我们可以在post方法中在第一次获取请求参数之前通过request.setCharacterEncoding("utf-8");来设置解码格式!   

                16.  响应编码
                          可以通过response.setContentType("text/html;charset=utf-8");设置服务器和浏览器的编码和解码格式 

                17.  路径问题:        

                          ①相对路径和绝对路径:

                                 绝对路径:绝对路径是以/开头的路径!    

                                      相对于当前服务器的绝对路径:如果是服务器解析,那么/就代表当前服务器的绝对路径:http://localhost:8080

                                      相对于当前web应用的绝对路径:代表的是http://localhost:8080/项目名/       

                                      如果是服务器端解析,代表的是:http://localhost:8080/项目名/    

                                      如果是浏览器端解析,代表的是:http://localhost:8080

                                相对路径:不是以/开头的路径是相对路径,相对的是当前web资源目录的路径!

                       ②常见的路径:    

                                url-pattern:    转发的路径:

                                       > 这两个的绝对路径由服务器解析,相对于项目的根目录     

                                 http://主机地址:端口号/项目名/        重定向的路径:      

                                       在实际开发中,我们使用的是绝对路径,不使用相对路径!开发中尽量不要使用硬编码的方式!

                                页面中的路径:     

                                        > 这两个路径有浏览器解析,相对于服务器的根目录      http://主机地址:端口号/     

                18.base标签   

                               base标签里面有一个href属性,这个属性允许我们用使用相对路径的方式使用绝对路径!    我们再使用相对路径的时候,相对路径会以这个href属性值作为前缀!

            

  • 相关阅读:
    Link标签的media属性
    Moss2007ctx问题
    Moss2007 ListTemplate
    Html body的滚动条禁止与启用
    DOM的事件冒泡
    IE解析UL和LI的规则和问题
    AT&T汇编语言语法(一)(转)
    Linux 汇编语言开发指南 (转)
    Python 模块 jwt
    Excel2003和excel2007读取方法
  • 原文地址:https://www.cnblogs.com/12344321hh/p/7409799.html
Copyright © 2011-2022 走看看