您的位置:首页 > Web前端 > JavaScript

JSP学习笔记

2009-02-16 19:17 357 查看
端口
tomcat默认端口号为8080,ie默认为80,可在tomcat安装目录下的conf中找到server.xml,在文中找到<Connector
port="8080"…,将8080改为80便可。

根目录
tomcat默认根目录为安装目录下的webapps/ROOT,可在server.xml中找到Host
name="localhost"appBase="webapps" 中的“webapps”改为你需要的目录,比如”E:/jsp”.那么你的jsp页面根目录就在E:/jsp/ROOT下。tomcat将jsp翻译成servlet以及class字节码放在%TOMCAT_ROOT%work/Catalina/localhost/_/org/apache/jsp中。

更改根目录也可在</host>前面加上<Contextpath="/hello"
docBase="D:/Myjsp/star" debug="0"reloadable="true"/>。此时,tomcat将jsp翻译成servlet以及class字节码放在%TOMCAT_ROOT%work/Catalina/localhost中。

<Context ….>可存在多个,这样可以同时建立多个网站,或者把一个网站分布在不同地方,根据path="…."来区分。

主页
jsp中如果你的主文件名为index.jsp,默认是不允许的(报错),可把目录中WEB-INF中web.xml中下面文字注释掉,便可用index.jsp了

<servlet>

<servlet-name>org.apache.jsp.index_jsp</servlet-name>

<servlet-class>org.apache.jsp.index_jsp</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>org.apache.jsp.index_jsp</servlet-name>

<url-pattern>/index.jsp</url-pattern>

</servlet-mapping>

指令标记
<%@pagecontentType="text/html;charset=GB2312"%>
<%@pageimport="java.util.*"%>
<%@pagelanguage="java"%>
<%@pagesession="true"%>
<%@pagebuffer="24KB"%>
<%@pageautoFlush="true"%>
<%@pageisThreadSafe="true"%>
<%@include file="文件的URL"%>静态嵌入一个文件,不允许URL中存在变量

动作标记
<jsp:include page=”文件路径”/>或者
<jsp:include page=”文件路径”>
<jsp:param name=”参数名1”
value=”参数1值”/>
….
<jsp:param name=”参数名n”
value=”参数n值”/>
</jsp:include>
URL中允许存在变量

指令标记include与动作标记include区别
指令标记include不允许存在变量,而动作标记include中可以
include指令标记在编译时处理所需文件,优点是速度快
include动作标记的所需文件在jsp运行时才被处理,缺点是速度慢,优点是更灵活

forward动作指令
<jsp:forward page=”文件路径”/>或者
<jsp:forward page=”文件路径”>
<jsp:param name=”参数名1”
value=”参数1值”/>
….
<jsp:param name=”参数名n”
value=”参数n值”/>

</jsp:forward>
从该标记出现处停止当前jsp页面的继续执行,而转向指定页面

声明变量
在<%!...%>之间放置java的变量声明语句,翻译成servlet时,这里的变量将成为成员变量,tomcat为每个用户启动一个线程,用户线程共享这些成员变量,因此一个用户对jsp页面成员变量的改变也会影响其他用户线程

内置对象
request

getPRotocol(); getServletPath();getHeader(String s); getServerPort();getServerName();
response

setContentType(String s)s可取text/html image/gif image/jpegapplication/msword等等

setHeader(Stringhead,String value) 如setHeader("Refresh","5")

sendRedirect(URL url)

setStatus(int n)
session

getID() 每一个session会有一个ID标识

setAttribute(String key,Object obj)

getAttribute(String key)

getAttributeNames()

removeAttribute(String name)

invalidate()

getMaxInactiveInterval()

setMaxInactiveInterval()

session对象的生存期限依赖于客户是否关闭浏览器,依赖于是否调用invalidate()或
session对象达到了设置的最长“发呆”状态时间
application
out

JavaBean
编写javabean就是编写一个java类,这个类创建的一个对象成为一个bean,这个类需遵循:
1
如类的成员变量为xxx,那么为了获取或设置变量,需提供两个方法:getXxx()setXxx()
2
对boolean变量,可以用“is”代替“get”和“set”
3
类中方法访问属性必须为public
4
构造方法必须为public、无参数
在jsp页面中使用bean
<jsp:useBean id="给bean起的名字"
class="创建bean的类"scope="bean有效范围"/>
其中scope可取pagesession
request application
<jsp:getProperty name="bean的名字"property="bean的属性"/>
setProperty有3种方式设置bean属性的值
1
通过字符串直接设置

<jsp:setPropertyname="bean的名字" property="bean的属性"
value=字符串/>
2
通过http表单的参数值来设置bean相应属性值,要求表单参数名字与bean属性名相同

<jsp:setProperty name="bean的名字"
property="*"/>
3
通过request参数值设置bean属性值

<jsp:setProperty name="bean的名字"
property="bean的属性" param="参数名"/>

中文字符处理
在用request接收到的中文字符显示为乱码,可用下面的函数将request接收到的字符串传化为正常字符串

<%!

public String codeToString(String str)

{

String s=str;

try{

byte tempB[]=s.getBytes("ISO-8859-1");

s=new String(tempB);

return s;

}catch(Exception e){

return s;

}

}

%>

Tomcat安装目录中的server.xml中不能出现中文,如出现,在启动tomcat时会发生“服务启动后停止”的错误。
如果通过server.xml更改根目录后,指定的页面(如index.jsp)老是在浏览器中看到不是该页面的内容,那么可以进tomcat安装目录下work/Catalina/localhost/_/org/apache/jsp删除该页面生成的servlet字节码和java文件。
如果根目录下所有文件用浏览器查看时都找不到,那么可能是WEB-INF下的web.xml配置有问题。

通过url直接访问servlet
需要在根目录的WEB-INF/web.xml的<web-app>中添加如下语句:
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>Logic.Dologin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>

<url-pattern>/test/hello</url-pattern>
</servlet-mapping>
其中,Logic.Dologin是在Logic包中的一个servlet文件,文件名为Dologin,/test/hello是在浏览器地址栏输入的访问地址

容器启动时加载servlet
<servlet>

<servlet-name>initservlet</servlet-name>

<servlet-class>com.bb.eoa.util.initServlet</servlet-class>

<init-param>

<param-name>log4j-init-file</param-name>

<param-value>config/log.properties</param-value>

</init-param>

<load-on-startup>1</load-on-startup>
</servlet>
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。

eclipse不能自动编译工程的解决方法
eclipse出现不编译工程的现象。怎么刷新classes目录下也是空的.
具体都操作了:
打开project->build automatically
试后不行,还是不编译.
打开project --> build automatically
另外clean一下就可能会编译了,结果还不行.
eclipse默认是选自动编译。即使取消自动编译,手动build工程,也不能编译。

出现这种情况一般有以下三种原因:
1.如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情况,可以把所有包都删除,然后一个一个的再引入(需要的),不要一下子把所有包都引入来,没用的可能会引起不良后果.
2.想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如Total
Commander。此时编译也不会通过,在problems下可能会提示“can't
delete classes ……”。关掉其它程序重新编译即可。
3.还有种情况是remove掉
JRE System Library,重新导入即可编译。但是什么原因导致的还不清楚

页面中applet连接数据库失败的解决方法

在本地jre目录的lib/security中有一个client.policy,添加

permission java.net.SocketPermission"*:3306","connect";

其中3306是mysql数据库端口号

tomcat5.5 的Tomcat Native library which allows optimal performance 的解决办法

启动tomcat5.5.25出现如下提示:org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息:The Apache Tomcat Native library which allows optimal performance in productionenvironments was not found on the java.library.path:
….
实际这是建议使用apache的( Apache Portable Runtime)apr。Tomcat
可以用apr来提供更强性能,提升Web静态页面的处理能力,不再需要专门的Web Server来处理静态页面了。
解决方法:安装Apache TomcatNative library。
文件下载地址:http://tomcat.heanet.ie/native/,并选择合适的包(假设选择了版本1.1.2)。
环境变量配置:将下载好的文件tcnative-1.dll放到Tomcat5.5/bin/目录下。重启Tomcat便OK!

后台代码修改导致需要重启tomcat的解决办法
在eclipse的tomcat配置中,JDK的参数加上:
-noverify-javaagent:C:/Tomcat/javarebel.jar-Drebel.dirs=C:/Tomcat/webapps/ROOT/WEB-INF/classes
其中javarebel.jar是需要的工具包,后面的路径是需要监视的地方
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: