web开发小知识点(持续更新)

来源:互联网 发布:什么软件缓存火影忍者 编辑:程序博客网 时间:2024/06/06 15:00

 

(1)JSP内置对象 范围问题

application  与  Session

类似于 中国 与 纽约  的关系!   只有大小,而没有包含关系

 

page、request、session、application 由小到大

小的可以得到大的中的内容,反之不可。

 

例如:

<%

    application.setAttribute("username","saber");

%>

 

<body>

    //此处session可获得application设置的属性值,反之则不行

    username:<%=session.getAttribute("username")%>

</body>

 

 

 

(2)Web项目 路径问题

 

src目录下的文件,映射为/WEB-INF/classes

 

在Servlet的init()方法中,动态设置

 

@Override

public void init(){

String virtualPath = "/WEB-INF/classes/users.xml";

ServletContext sc = this.getServletContext();

String realPath = sc.getRealPath(virtualPath);

DocumentManager.setFilename(realPath);

//System.out.println("realPath: " + realPath);

}

 

 

(3)Tomcat conf目录 web.xml 中的 listings属性

 

 

打开tomcat下,conf目录中的web.xml文件,将listings的param-value,设置为true  

 

<servlet>

        <servlet-name>default</servlet-name>

        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

 

访问 http://localhost:8080/webres (目录名)

则可显示应用目录下的文件列表

 

(4)web.xml中,关于Servlet
客户端 - 服务端 - servlet  (类比:三方协定)
//服务端与Servlet
<servlet>
<servlet-name>firstServlet</servlet-name>
<servlet-class>com.test.FirstServlet</servlet-class>
<load-on-startup>0</load-on-startup>
<init-param>
    <param-name>username</param-name>
    <param-value>abc</param-value>
</init-param>
</servlet>
//服务端与客户端(映射路径)
<servlet-mapping>
<servlet-name>firstServlet</servlet-name>
<url-pattern>/haha.jsp</url-pattern>
</servlet-mapping>

 

(5)关于JSP、EL内置对象  requestScope 与 pageContext.request 区别等……

示例:

 

<html>

  <head></head>

<%

    application.setAttribute("language","java");

%>

<body>

//applicationScope作为容器使用,后台可能使用Map实现等,不一定有标准的get方法

   ${applicationScope.language}

<form method="post" action="${pageContext.request.contextPath}/ProcessRegisterUser.jsp">

  username:<input type="text" name="username1" /><br/>

         password:<input type="password" name="password" /><br/>

         score:<input type="text" name="score" /><br/>

         <input type="submit" value="ok"/><br/>

       </form>

  </body>

</html>

 

 

action部分,错误写法(1)、(2):

(1)request.contextPath

JSP与EL中的内置对象,在语法层次上是两码事(但在后台,代码是汇总在一起的)

 

推测后,改为(2)requestScope.contextPath

contextPath根本就没有存入!所以还是不行……

 

现在,想要获取request,联想到使用pageContext (可行!)

pageContext.request.contextPath    中的‘.’ 对应一个get方法

 

${requestScope == pageContext.request}  返回 false

 

两者区别:

requestScope肯定表示从request作用范围内去查找,而且仅仅把request当做一个保存对象的容器而已

 

。主要用于提取作用范围内的值。一般是在经过设置值(request.setAttribute方法)之后使用。一般

 

是在其它后台模块经过了存取对象到一定范围的操作(调用对应setAttribute方法)之后才用。

pageContext.getRequest得到的是一个完整的对象,当做普通对象来用。

 

 

setAttribute、getAttribute   只在服务器端内部传递数据

getparameter   从客户端向服务端

 

 

原创粉丝点击