您的位置:首页 > 其它

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

2011-03-19 17:26 267 查看
(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 从客户端向服务端
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: