作者:ybwen
如何混合使用jsp和ssi #include?
在jsp中可以使用如下方式包含纯html:
在jsp中如何执行浏览重定向?
使用如下方式即可:response.sendredirect("http://ybwen.home.chinaren.com/index.html");
也能物理地改变http header属性,如下:
<%
response.setstatus(httpservletresponse.sc_moved_permanently);
string newlocn="/newpath/index.html";
response.setheader("location",newlocn);
%>
如何防止在jsp或servlet中的输出不被browser保存在cache中?
把如下脚本加入到jsp文件的开始即可:
<%
response.setheader("cache-control","no-store"); //http 1.1
response.setheader("pragma","no-cache"); //http 1.0
response.setdateheader ("expires", 0); //prevents caching at the proxy server
%>
在jsp中如何设置cookie?
cookie是作为http header的一部分被发送的,如下方法即可设置:
<%
cookie mycookie = new cookie("aname","avalue");
response.addcookie(mycookie);
%>
在jsp中如何删除一个cookie?
<%
cookie killmycookie = new cookie("mycookie", null);
killmycookie.setmaxage(0);
killmycookie.setpath("/");
response.addcookie(killmycookie);
%>
在一个jsp的请求处理中如何停止jsp的执行
如下例:
<%
if (request.getparameter("wen") != null) {
// do something
} else {
return;
}
%>
在jsp中如何定义方法
你可以定义方法,但是你不能直接访问jsp的内置对象,而是通过参数的方法传递。如下:
<%!
public string howbadfrom(httpservletrequest req) {
httpsession ses = req.getsession();
...
return req.getremotehost();
}
%>
<%
out.print("in general,lao lee is not baddie ");
%>
<%= howbadfrom(request) %>
如果browser已关闭了cookies,在jsp中我如何打开session来跟踪
使用url重写即可,如下:
hello1.jsp
<%@ page session="true" %>
<%
integer num = new integer(100);
session.putvalue("num",num);
string url =response.encodeurl("hello2.jsp");
%>
<a href='<%=url%>'>hello2.jsp</a>
hello2.jsp
<%@ page session="true" %>
<%
integer i= (integer )session.getvalue("num");
out.println("num value in session is "+i.intvalue());
%>
在jsp中能发送email吗
可以使用sun的专用包:sun.net.smtp包。如下脚本使用smtpclient类发送email。
<%@ page import="sun.net.smtp.smtpclient, java.io.*" %>
<%
string from="ybwen@sina.com";
string to="hewenjun@yeah.net, lei@who.com.cn";
try{
smtpclient client = new smtpclient("mail.xxxxx.xxx");
client.from(from);
client.to(to);
printstream message = client.startmessage();
message.println("to: " + to);
message.println("subject: sending email from jsp!");
message.println("this was sent from a jsp page!");
message.println();
message.println("cool! :-)");
message.println();
message.println("good boy");
message.println("i'm in genius.com");
message.println();
client.closeserver();
}
catch (ioexception e){
system.out.println("error sending email:"+e);
}
%>
在servlet中我能调用一个jsp错误页吗
当然没问题,如下展示了如何在一个servlet控制逻辑单元内调用一个jsp错误页面。
protected void senderrorredirect(httpservletrequest request,
httpservletresponse response, string errorpageurl,
throwable e)
throws servletexception, ioexception {
request.setattribute ("javax.servlet.jsp.jspexception", e);
getservletconfig().getservletcontext().
getrequestdispatcher(errorpageurl).forward(request,
response);
}
public void dopost(httpservletrequest request,httpservletresponse response) {
try {
// do something
} catch (exception ex) {
try {
senderrorredirect(request,response,"/jsp/myerrorpage.jsp",ex);
} catch (exception e) {
e.printstacktrace();
}
}
}
jsp和applet如何通讯
jsp如何与ejb sessionbean通讯
下面的代码段作了很好的示范
<%@ page import="javax.naming.*, javax.rmi.portableremoteobject,
foo.accounthome, foo.account" %>
<%!
//定义一个对sessionbeanhome接口实例的全局引用
accounthome acchome=null;
public void jspinit() {
//获得home接口实例
initialcontext cntxt = new initialcontext( );
object ref= cntxt.lookup("java:comp/env/ejb/accountejb");
acchome = (accounthome)portableremoteobject.narrow(ref,accounthome.class);
}
%>
<%
//实例化sessionbean
account acct = acchome.create();
//调用远程方法
acct.dowhatever(...);
// 如此等等
%>
当我使用一个结果集时,如何防止字段为"null"的字域显示在我的html输入文本域中?
可以定义一个简单的函数来达到目的,如下:
<%!
string blanknull(string s) {
return (s == null) ? "" : s;
}
%>
然后在jsp的form中,可以这样使用
<input type="text" name="shoesize" value="<%=blanknull(shoesize)%>">
如何中servlet或jsp下载一个文件(如:binary,text,executable)?
现提供两个解决方案:
a:使用http,如
点击下载网络恐龙图片(这个地址是假的)
b:在servlet中,通过设置contenttype和使用java.io包的stream等类可作到.例如:
response.setcontenttype("application/x-msword");
然后想输出缓冲中写一些东东即可。
使用usebean标志初始化bean时如何接受初始化参数
使用如下两标签即可:
<jsp:getproperty name="wenbean" property="someproperty"/>
<jsp:setproperty name="wenbean" property="someproperty" value="somevalue"/>
jsp问答集二
作者:ybwen
使用jsp如何获得客户浏览器的信息?
使用request.getheader(string)即可
能象调用子程序一样调用jsp吗?
当然可以,用<jsp:include page="relativeurl" flush="true"/>
当我重编译我的jsp使用的一个类后,为什么jvm继续使用我的老class?
<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别?
前一个为静态包含,而后一个为动态包含
jsp的缺点?
1。对java程序进行调试没有好东东
2。因大多数的servlet引擎不支持connection pooling
3。servlet引擎没有标准
4。jsp与其它脚本语言的交互
jsp能进行递归调用吗?
当然可以,如对form的提交给本页
如何实现jsp的国际化?
为各种版本提供resource bundles属性文件即可
在jsp中如何写文本文件?
使用printwriter对象,如:
<%@ page import="java.io.*" %>
<%
string str = "print me";
string nameoftextfile = "/usr/anil/imp.txt";
try {
printwriter pw = new printwriter(new fileoutputstream(nameoftextfile));
pw.println(str);
pw.close();
} catch(ioexception e) {
out.println(e.getmessage());
}
%>
如何在jsp中包括绝对路径文件?
使用urlconnection即可。
在servlets和jsp之间能共享session对象吗?
当然可以,
httpsession session = request.getsession(true);
session.putvalue("variable","value");
javascript的变量能复制到jsp的session中吗?
如何设置cookie在某一时间后过期?
用cookie.setmaxage(int)
如何获得当前的sessions数?
可以使用httpsessionbindinglisteners来跟踪
能设置一些代码在我所有的jsp文件之上运行?如果可以,能共享吗?
当然可以,可以为你的jsp文件定义一个别名:/jsp/=ybwen.genius.mypreprocessingservlet,而以/jsp/为前缀的文件可以使用
对一个jsp页,如果多个客户端同时请求它,同步可能吗?
在jsp:usebean语法中使用beanname有何好处?
beanname使用beans.instantiate()初始化bean
当我使用<jsp:forward>时,在浏览器的地址栏没有改变?
使用response.sendredirect("newurl")
如何转换jsp 0.9版本的文件到jsp1.1?
可使用sed/awk即可
使用jsp能设置html form中输入域的焦点,不用javascript?
没办法
使用jsp连接到数据库连接缓冲池的最好方法是什么?
1。使用jdbc2。0中带有此服务的driver
2.使用提供有此服务的application server
3.自己写
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器