JSP学习笔记

端口

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下。tomcatjsp翻译成servlet以及class字节码放在%TOMCAT_ROOT%work/Catalina/localhost/_/org/apache/jsp中。

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

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

主页

jsp中如果你的主文件名为index.jsp,默认是不允许的(报错),可把目录中WEB-INFweb.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的属性"/>

setProperty3种方式设置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";

其中3306mysql数据库端口号

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的解决办法

eclipsetomcat配置中,JDK的参数加上:

-noverify-javaagent:C:/Tomcat/javarebel.jar-Drebel.dirs=C:/Tomcat/webapps/ROOT/WEB-INF/classes

其中javarebel.jar是需要的工具包,后面的路径是需要监视的地方

你可能感兴趣的:(学习笔记)