??xml version="1.0" encoding="utf-8" standalone="yes"?>
参照Q?http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html
]]>
参照Q?http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
]]>
参照文档Q?http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
2.jsp中只做一些java处理Q没有html之类的东西输出,而处理后的D回iframeQ但我现在点L钮后Q弹出新的空白窗?.jsp?nbsp;
请高手指教如何修改,使得点击按钮后在iframe内显C?.jspQ而不会弹出新的空白窗?.jsp?/p>
另外我通过试发现Q在IE6,IE7,NETSCAPE7.1q几个浏览器中,都实C我所希望的功能(点击按钮后,D回到iframe,但不弹出新的I白H口2.jspQ,可是NETSCAPE7.02却不行,不知道是Z么?/p>
请高手指教,先谢谢各位了?/p>
type Status report
message /hello1/
description The requested resource (/hello1/) is not available.
<html> <c:if test="${fn:length(param.username) > 0}" > <web-app xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd" <jsp-config>
则将javaee.jar包再copy一份放在tomcat目录的common\lib下就不会了?br>关于用到的javaee.jar、jsf-api.jar、jsf-impl.jar、jstl-1.2.jarq四个包可以通过myeclipse中获得,如果你安装了myeclipse5.5的话Q我安装的是MyEclipse 5.5.1 GAQ这四个包的所在的目录是:MyEclipse 5.5.1 GA\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_5.5.1\data\libraryset\EE_5\
到此Q再l出具体的文件代码吧?br>(1) hello1\index.jsp
<%@ taglib uri="<%@ taglib uri="
<head><title>Hello</title></head>
<body bgcolor="white">
<h2>Hello, my name is Duke. What's yours?</h2>
<form method="get">
<input type="text" name="username" size="25">
<p></p>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
<%@include file="response.jsp" %>
</c:if>
</body>
</html>
(2) hello1\response.jsp
<h2><font color="black">Hello, ${param.username}!</font></h2>
(3) hello1\WEB-INF\web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
version="2.5">
<jsp-property-group>
<display-name>hello1</display-name>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<scripting-invalid>false</scripting-invalid>
<is-xml>false</is-xml>
<!-- <include-prelude>/template/prelude.jspf</include-prelude> -->
<!-- <include-coda>/template/coda.jspf</include-coda> -->
</jsp-property-group>
</jsp-config>
</web-app>
成功之后面昄为:
Hello, my name is Duke. What's yours?
Hello, afdfadsfads!
]]>
1.个体和交互胜q过E和工具
一个优U的团队成员未必是一个技术一的E序员,可能是技术一般的E序员,但他能很好的与他人合作,沟通,合作Q良好的沟通以及交互能力比单纯的编E更重要?br>2.可以工作的Y件胜q面面俱到的文档
一个可以工作的软g需要具有文档,用文档可以传辄l的原理及结构,以及对系l及设计决策q行描述。但q多的文档也q不是一件好事,首先~制需要花大量的时_保持各文档同步,文档与代码之间的同步更是一仉事,如果没有做到同步Q那么会形成误导Q后果将更严重?br> 对于团队来说Q需要编写和l护一份描q系l原理及l构的文档,描述pȝ原理Q结构和设计原理。关于培训新员工Q则其与业务及软g均熟悉的老员工坐在一P实时指导Qƈl合代码?br>3.客户合作胜过合同谈判
与客L密的l合在一P短周期的向客hCY件的q行情况。得到客L反馈q及时跟q进行更攏V?br>4.响应变化胜过遵@计划
做短旉的详l计划,长时间的_略计划Q时间越长计划越_略
短周期,持箋的交付能工作软gl客P得到客户的反馈?br> 以h为本Q给成员自信Q激励成员来沟徏目Q信L个h都成完成?br> 以能够满_户需求的数量来度量Y件的q度?br> 使团队成员保持高度集中的_֊Q饱满的_Q不要ؓ了多做一点工作而借用明于的精力?br> 最好的架构Q需求,设计于团队?br> 每隔一D|_团队Ҏ有效的工作进行反省,对组l方式,规则Q关pȝq行调整Q达到更有效的工作方?br>
极限~程
1.客户做ؓ团队开发h员,客户可以是和开发团队同一家公司的一l业务分析师或市ZӞ可以是用户团体委z用户代表?br>2.每两周交付一ơ可以工作的软gQP代计划(两周做一ơ,重复周期Q,发布计划Q一ơ做大概三个月的发布计划Q做一ơ长周期的交付?br>3.验收试
4.l对~程Q两个h使用一台电脑,一个控刉盘,一个检查代码的错误及可以改q的地方Q结对的关系每天改变一ơ,每个团队成员应该和其他所有团队成在一起工作过Q这栯够促q业务知识及技术知识在团队中的快速传播,且能大大减少~陷率?br>5.试驱动的开发,~写所有品代码的目的都是Z使测试通过Q测试用例和代码一h化,基本是几分钟一ơ。结果,一个非常完整的试用例集就和代码一L成v来?br>6.每个l对都有对Q何一个模块的出(check outQ权Q及修改权力Q没有程序员Ҏ一个特定的模块单独负责?br>7.团队人员保持E_适中的开发速度Q不允许加班?br>8.开攄工作I间Q积极讨论的工作环境。生产率会成倍的提高?br>9.单的设计开发,考虑能够工作的最单的方式Q如能够能页面完成的׃能EJBQ不用数据库。不能出现重复的代码Q一ơ就够?br>10.团队l常性地对代码进行重构?nbsp;
Copyright (c) 1991, 2001, Oracle Corporation. All rights reserved.
pȝ参数文g为E:\oracle\ora90\network\admin\listener.ora
写入E:\oracle\ora90\network\log\listener.log的日志信?br>写入E:\oracle\ora90\network\trace\listener.trc的跟t信?br>跟踪U别当前?
?pid=4092 开?br>监听Q?DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ygogo98sla5i4oh)(PORT=1521)))
TNS-12545: 因目标主机或对象不存在,q接p|
TNS-12560: TNS: 协议适配器错?br> TNS-00515: 因目标主机或对象不存在,q接p|
32-bit Windows Error: 1004: Unknown error
不再监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
原因是我安装了oracle之后Q又修改了主机名
解决ҎQ?br>
一、直接修?listener.ora
路径是: oracle安装目录\ora90\network\ADMIN\listener.ora
修改HOST Z机名或者IP
二、通过 Net ManagerQ在 监听E序\LISTENER 下直接修改主机即?
会话跟踪Q?/span>
1?nbsp;使用隐藏表单字段
<INPUT TYPE=”HIDDEN” NAME=”session” VALUE=”landril”
2?nbsp;URL重写
http://host/path/file.jsp?sessionid=landril
3?nbsp;持久Cookie
4?nbsp;会话HttpSession
一?/span>使用session的简单步?/span>
获取HttpSessionQ?/span>request.getSession()ҎQ对象,查找与该会话相关的信息(session.getAttribute()Q,存储会话中的信息Q?/span>session.setAttribute()Q,删除会话中的数据Q?/span>session.removeAttribute()Q,删除当前会话Q?/span>session.invalidate()Q?/span>
?/span>session中,可以存储L数量的键值对Q通过键即可获取相应的|即用:session.getAttribute(“key”);?/span>
二?/span>session的常用方?/span>
1?nbsp;getAttribute()Q从session中获取以前存储的?/span>
2?nbsp;getAttributeNames()Q返?/span>session中所有属性的名称
3?nbsp;setAttribute()Q将键与值关联v来,存储q?/span>session
4?nbsp;removeAttribute()Q删?/span>session中存储的对应键的?/span>
5?nbsp;invalidate()Q删除整?/span>session及其存储的键?/span>
6?nbsp;logout()Q注销当前用户
7?nbsp;getId()Q获取每?/span>session对应的唯一ID
8?nbsp;getCreationTime()Q获?/span>session创徏的时?/span>
9?nbsp;getLastAccessedTime()Q获?/span>session最后被讉K的时?/span>
10?span>
getMaxInactiveInterval()Q在用户没有讉K的情况下Q会话在被自动废弃之前应该保持多长时?/span>
三?/span>使用session的一个例子,拥有购物车的在线商店
1?/span>CatalogPage.java
package com.landril.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CatalogPage extends HttpServlet {
private CatalogItem[] items;
private String[] itemIds;
private String title;
protected void setItems(String[] itemIds) {
this.itemIds = itemIds;
items = new CatalogItem[itemIds.length];
for (int i = 0; i < items.length; i++) {
items[i] = Catalog.getItem(itemIds[i]);
}
}
protected void setTitle(String title) {
this.title = title;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if(items == null){
response.sendError(response.SC_NOT_FOUND,"Missing Items:");
return;
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>"+title+"</title></head><body><h3>"+title+"</h3>");
CatalogItem item;
for (int i = 0; i < items.length; i++) {
out.println("<hr>");
item = items[i];
if(item == null)
out.println("Unknow itemId: "+itemIds[i]);
else{
out.println();
String formURL = request.getContextPath()+"/orderPage";
formURL = response.encodeURL(formURL);
out.println("<form action='"+formURL+"'>");
out.println("<input type='hidden' name='itemId' value='"+item.getItemId()+"'>");
out.println(new String(item.getSDesc().getBytes("utf-8"),"GBK")+"$"+item.getPrice()+item.getLDesc());
out.println("<input type='submit' value='add to shopping cart'></form></body></html>");
}
}
}
}
2?/span>ComputerBook.java
package com.landril.session;
public class ComputerBook extends CatalogPage{
public void init(){
String[] ids = {"book1","book2","book3","book4"};
setItems(ids);
setTitle("Japanese Book");
}
}
3?/span>JapaneseBook.java
package com.landril.session;
public class JapaneseBook extends CatalogPage{
public void init(){
String[] ids = {"book5","book6"};
setItems(ids);
setTitle("Computer Book");
}
}
4?/span>OrderPage.java
package com.landril.session;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class OrderPage extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
ShoppingCart cart;
synchronized(session){
cart = (ShoppingCart)session.getAttribute("shop");
if(cart == null){
cart = new ShoppingCart();
session.setAttribute("shop", cart);
}
String itemId = request.getParameter("itemId");
if(itemId != null){
String num = request.getParameter("num");
if(num == null)
cart.addItem(itemId);
else{
int numItems;
try {
numItems = Integer.parseInt(num);
} catch (NumberFormatException e) {
numItems = 1;
}
cart.setNum(itemId, numItems);
}
}
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Your Order";
out.println("<html><head><title>"+title+"</title></head><body><h3>"+title+"</h3>");
synchronized(session){
List<ItemOrder> itemOrders = cart.getItemOrders();
if(itemOrders.size() == 0)
out.println("No items");
else{
out.println("<table border=1><tr><th>Item ID<th>Short Description<th>Long Description<th>Unit Price<th>Number<th>Total Price");
ItemOrder order;
for (int i = 0; i < itemOrders.size(); i++) {
order = (ItemOrder)itemOrders.get(i);
out.println("<tr><td>"+order.getItemId()+"<td>"+order.getSDesc()+"<td>"+order.getLDesc()+"<td>"+order.getUnitPrice()+"<td>");
out.println("<form><input type='hidden' name='itemId' value='"+order.getItemId()+"'>");
out.println("<input type='text' name='num' size=3 value='"+order.getNum()+"'>");
out.println("<input type='submit' value='update order'></form><td>");
out.println(order.getTotalPrice());
}
String checkURL = response.encodeURL(request.getContextPath()+"/check.html");
out.println("</table><form action='"+checkURL+"'>");
out.println("<input type='submit' value='submit'></form></body></html>");
}
}
}
}
5?/span>ShoppingCart.java
package com.landril.session;
import java.util.ArrayList;
import java.util.List;
public class ShoppingCart {
private List<ItemOrder> itemOrders;
public ShoppingCart() {
itemOrders = new ArrayList<ItemOrder>();
}
public List<ItemOrder> getItemOrders(){
return itemOrders;
}
public synchronized void addItem(String itemId){
ItemOrder order;
for(int i=0;i<itemOrders.size();i++){
order = (ItemOrder)itemOrders.get(i);
if(itemId.equals(order.getItemId())){
order.addNum();
return;
}
}
ItemOrder newOrd = new ItemOrder(Catalog.getItem(itemId));
itemOrders.add(newOrd);
}
public synchronized void setNum(String itemId,int num){
ItemOrder order;
for (int i = 0; i < itemOrders.size(); i++) {
order = (ItemOrder)itemOrders.get(i);
if(itemId.equals(order.getItemId())){
if(num <=0)
itemOrders.remove(i);
else
order.setNum(num);
}
return;
}
ItemOrder newOrd = new ItemOrder(Catalog.getItem(itemId));
itemOrders.add(newOrd);
}
}
6?/span>CatalogItem.java
package com.landril.session;
public class CatalogItem {
private String itemId;
private String sDesc;
private String lDesc;
private float price;
public String getItemId() {
return itemId;
}
public void setItemId(String itemId) {
this.itemId = itemId;
}
public String getLDesc() {
return lDesc;
}
public void setLDesc(String desc) {
lDesc = desc;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getSDesc() {
return sDesc;
}
public void setSDesc(String desc) {
sDesc = desc;
}
public CatalogItem(String itemId, String desc, String desc2, float price) {
super();
this.itemId = itemId;
sDesc = desc;
lDesc = desc2;
this.price = price;
}
}
7?/span>ItemOrder.java
package com.landril.session;
public class ItemOrder {
private CatalogItem item;
private int num;
public ItemOrder(CatalogItem item) {
setItem(item);
setNum(1);
}
public CatalogItem getItem() {
return item;
}
public void setItem(CatalogItem item) {
this.item = item;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getItemId() {
return item.getItemId();
}
public String getSDesc() {
return item.getSDesc();
}
public String getLDesc() {
return item.getLDesc();
}
public float getUnitPrice() {
return item.getPrice();
}
public void addNum() {
setNum(num + 1);
}
public void cancelOrder() {
setNum(0);
}
public float getTotalPrice() {
return num * getUnitPrice();
}
}
8?/span>Catalog.java
package com.landril.session;
public class Catalog {
private static CatalogItem[] items = {
new CatalogItem("book1", "Hibernate", "HibernateQ?/span>Hibernate", 57),
new CatalogItem("book2", "Spring", "SpringQ?/span>Spring", 36),
new CatalogItem("book3", "Tomcat", "TomcatQ?/span>Tomcat", 23),
new CatalogItem("book4", "Jboss", "JbossQ?/span>Jboss", 35),
new CatalogItem("book5", "Japanese1", "Japanese1Q?/span>Japanese1", 35),
new CatalogItem("book6", "Japanese2", "Japanese2Q?/span>Japanese2", 23) };
public static CatalogItem getItem(String itemId) {
CatalogItem item;
if (itemId == null)
return null;
for (int i = 0; i < items.length; i++) {
item = items[i];
if (itemId.equals(item.getItemId()))
return item;
}
return null;
}
}
9?/span>check.html
<html>
<head>
<title>checking out</title>
</head>
<body>
Checking out
</body>
一?/span>Servlet生命周期
服务器加?/span>ServletQ创?/span>Servletcȝ实例Q调?/span>Servlet?/span>init()ҎQ处理客L的服务调用(如果收到hQ调?/span>service()ҎQ?/span>service()Ҏ处理hq将l果q回客户端,{待下一下请求,重复Q,Servlet在服务器调用destroy()Ҏ后被卸蝲
二?/span>会话跟踪技?/span>
1?nbsp;使用隐藏表单字段
<INPUT TYPE=”HIDDEN” NAME=”session” VALUE=”landril”
2?nbsp;URL重写
http://host/path/file.jsp?sessionid=landril
3?nbsp;持久Cookie
4?nbsp;会话HttpSession
ServletRequestQ用于将h的信息传送给Servlet
ServletResponseQ提供服务器对客Lh的响?/span>
RequestDispatcherQ接收用L的请求ƈ其发送到M资源Q?/span>RequestDispatcher对象用作资源的封装器Q通过路径或名U指?/span>
ServletConfigQ定?/span>Servlet配置对象Q可以从web.xml文g中获取初始化参数的g及对ServletContext对象的引?/span>
ServletContextQ让Servlet查找有关Servlet引擎及其环境的信?/span>