(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 (目录名)
则可显示应用目录下的文件列表
(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 从客户端向服务端