JavaWeb复习小知识点(一)

1.在JAVAWEB开发中,经常使用绝对路径访问js/css文件:
 访问绝对路径的方法为:${pageContext.request.ContextPath}/ <%=request.getContextPath()%>

2.在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是"*.扩展名",另一种格式  是以正斜杠(/)开头并以"/*"结尾

3.如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。  凡是在web.xml文件中找不到匹配的元素的URL,它们的访问请求都将交给缺省Servlet处理,  也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求

4.当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上  调用Servlet的service方法,因此service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。
 若资源为局部变量,则不会引起安全问题,若为全局问题,则会引发安全问题。使用同步锁可以解决安全问题,但  是同步锁会导致不放弃锁,所有的其他资源都在等待锁。还可以使用SingleThreadModel接口。但是在Servlet API  2.4中,已经将SingleThreadModel标记为Deprecated(过时的)


5.在Servlet的配置文件的web.xml中,可以使用一个或多个标签为servlet配置一些初始化参数:
     
         name
          gacl
     

   获取参数:ServletConfig的类的实例对象调用getInitParameter();(getInitParameterName()获取所有初始化    参数)
      Enumeration e = config.getInitParameterNames();
          while(e.hasMoreElements()){
              String name = e.nextElement();
              String value = config.getInitParameter(name);
              response.getWriter().print(name + "=" + value + "
");
          }
6.ServletContext对象:web启动的时候,会为每一个web应用程序创建一个ServletContext对象 获取: this.getServletConfig()/(this).getServletContext())
    应用: 1.多个Servlet实现数据共享

     2. 获取web.xml配置的初始化参数 

        3.实现请求转发

     4.读取资源文件:
7./的访问区别:
 1)代表web工程:a.ServletContext.getRealPath(String path)获取资源的绝对路径

            b. 在服务器端forward到其他页面 

            c. 使用include指令或者标签引入页面

  2)代表webapps目录(浏览器用):

          sendRediret()请求重定向,超链接跳转,From表单,js脚本和css引用


8.乱码问题:
Get请求:url后面带的参数():超链接、重定向
String name = request.getPara...("name");
String strName = new String(name.getByte("iso-8859-1"),"GBK");
post请求:最开始处将请求的数据设置为“UTF-8”就行了,输入如下语句:                                  request.setCharacterEncoding(“UTF-8”);


9.Cookie:在程序代码中并没有使用setMaxAge方法设置cookie的有效期,
 所以当关闭浏览器之后,cookie就失效了,要想在关闭了浏览器之后,cookie依然有效,
 那么在创建cookie时,就要为cookie设置一个有效期。(将cookie存贮到硬盘上) 将cookie的有效期设置为0,命令  浏览器删除该cookie


 要想在cookie中存储中文,那么必须使用URLEncoder类里面的encode(String s, String enc)方法进行中文转码,  例如:
    Cookie cookie = new Cookie("userName", URLEncoder.encode("孤傲苍狼", "UTF-8"));
 在获取cookie中的中文数据时,再使用URLDecoder类里面的decode(String s, String enc)进行解码,例如:
    URLDecoder.decode(cookies[i].getValue(), "UTF-8")

10.表单重复提交的三种场景:

    1)重复点击提交按钮,解决:JavaScript判断设置标志只提交一次/点击提交按钮之后按钮不可点击。

    2)刷新之后提交按钮,点击后退提交 解决:session设置令牌机制


11.注释:在JSP中,注释有:
         显式注释:直接使用HTML风格的注释:
         隐式注释:直接使用JAVA的注释://、/*……*/
         JSP自己的注释:<%- - 注释内容- -%>
   区别:HTML的注释在浏览器中查看源文件的时候是可以看得到的,而JAVA注释和JSP注释在浏览器中查看            源文件时是看不到注释的内容的

12.JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:
      这个Java类必须具有一个无参的构造函数
      属性必须私有化。
      私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。

13.标签用于设置和访问JavaBean对象的属性。
  name:javaBean对象名
  property:对象的实例名
  param:作为传参时的参数名
  value:值。

你可能感兴趣的:(学习心得)