最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

JavaWeb编程技术第2版源代码

IT圈 admin 278浏览 0评论

2023年12月14日发(作者:乐月华)

Java Web编程技术(第2版)

程序1.1

用户注册

用户注册

姓名:

年龄:

性别:

兴趣:文学

体育

电脑

学历:

邮件地址:

程序1.2

派派电子商城

用户名

密 码

onclick="check();">

三星 S5830领取手机节优惠券,立减100元!再送:200元移动手机卡!

派派价:2068元

联想(Lenovo)G460AL-ITH 14.0英寸笔记本电脑(i3-370M 2G 500G 512

独显 DVD刻录 摄像头 Win7)特价:3199元!

程序1.3

body {

font-family:Verdana; font-size:14px; margin:10;}

#container {

margin:0 auto; width:100%;

}

#header {

height:50px; background:#9c6; margin-bottom:5px;

}

#topmenu {

height:30px; background:#c0c0c0; margin-bottom:5px;

}

#middle {

margin-bottom:5px;

}

#leftmenu {

float:left; width:180px; background:#cf9;

}

#content {

float:left; background:#ffa;

}

#footer {

height:60px; background:#9c6;

clear:both;

} 程序1.4

用户注册

method="post" onSubmit="return custCheck()">

请输入客户信息:

客户名:
Email地址:
电话:

程序1.5

package ;

import ption;

import tException;

import vlet;

import rvlet;

import rvletRequest;

import rvletResponse;

import .*; @WebServlet(name = "helloServlet", urlPatterns = { "/" })

public class HelloServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

n("");

n("Hello Servlet");

n("

Hello,World!

");

n("现在的时间是:"+new ());

n("");

n("");

}

}

程序1.6

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

简单的JSP页面

Hello,World!

现在的时间是:<%=new () %>

程序2.1

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

登录页面

用户名:
密  码:

程序2.2

package ;

import .*;

import t.*;

import .*; import vlet;

@WebServlet(name="LoginServlet",urlPatterns={"/"})

public class LoginServlet extends HttpServlet {

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

String username = ameter("username");

String password = ameter("password");

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

n("");

if("admin".equals(username)&& "admin".equals(password)){

n("登录成功!欢迎您, "+username);

}else{

n("对不起!您的用户名或密码不正确.");

}

n("");

}

}

程序2.3

package ;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/ClientInfoServlet")

public class ClientInfoServlet extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

n("");

n("获取客户端信息");

n("");

n("

客户端信息:

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

客户主机名" + oteHost() + "
客户IP地址" + oteAddr() + "
端口" + otePort() + "
请求方法" + hod() + "
请求协议" + tocol() + "
请求URI" + uestURI() + "
");

n("");

}

public void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

程序2.4

package ;

import .*;

import t.*;

import .*;

import ation;

import vlet;

@WebServlet("/ShowHeaders")

public class ShowHeadersServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException{

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

n("");

n("请求头信息");

n("服务器收到的请求头信息

");

n(hod()+" "

+uestURI()+" "

+ryString()+" "

+tocol()+"

");

Enumeration headers = derNames();

while(eElements()){

String header = (String) ement();

String value = der(header);

n(header+" = "+value+"

");

}

n("");

}

}

程序2.5

package ;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet(name="LoginServlet",urlPatterns={"/"})

public class LoginServlet extends HttpServlet {

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

String username = ameter("username");

String password = ameter("password");

// 用户名和口令均为admin,认为登录成功

if(("admin")&&("admin")){

ribute("username", username);

RequestDispatcher rd = uestDispatcher("/");

d(request, response);

}else{

RequestDispatcher rd =

uestDispatcher("/");

d(request, response);

}

}

}

程序2.6

Your are welcome!

${username}

程序2.7

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

简单测试

请回答下面的问题:

1. Sun公司于2010年被Oracle公司收购。

正确

错误

2. Windows操作系统是哪个公司的产品?

Apple公司

IBM公司

Microsoft公司

3.下面的程序设计语言,哪些是面向对象的?

Java语言

C语言

C++语言

4.编写Servlet程序应继承哪个类?

交卷请点击:

重答请点击:

程序2.8

package ;

import ption;

import riter;

import tException;

import vlet;

import rvlet;

import rvletRequest;

import rvletResponse;

@WebServlet(name="SimpleTestServlet",urlPatterns={"/"}) public class SimpleTestServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

String quest1 = ameter("quest1");

String quest2 = ameter("quest2");

String[] quest3 = ameterValues("quest3");

String quest4 = ameter("quest4").trim();

int score = 0;

if(quest1!=null && ("1")){

score = score+25; // 答对一道题加25分

}

if(quest2!=null&& ("3")){

score = score+25;

}

if(quest3!=null&&==2&&quest3[0].equals("1")&&

quest3[1].equals("3")){

score = score+25;

}

if(quest4!=null&& (("HttpServlet")||

("rvlet"))){

score = score+25;

}

n("");

n("测试结果");

n("");

n("你的成绩是:"+score+"分");

n("");

}

}

程序2.9

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

上传文件

${message}

method="post">

文件上传
会员号:
文件名:

程序2.10

package ;

import .*;

import t.*;

import .*;

import tion.*;

@WebServlet(name="FileUploadServlet",urlPatterns={"/"})

@MultipartConfig(location="D:",fileSizeThreshold=1024)

public class FileUploadServlet extends HttpServlet{

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

// 返回Web应用程序文档根目录

String path = vletContext().getRealPath("/");

String mnumber = ameter("mnumber");

Part p = t("fileName");

String message="";

if(e() >1024*1024){ // 上传的文件不能超过1MB大小

();

message = "文件太大,不能上传!";

}else{

path = path + "member" +mnumber;

File f = new File(path);

if( !()){ // 若目录不存在,则创建目录

();

}

String h = der("content-disposition");

// 得到文件名

String fname = ing(dexOf("")+1, ()-1);

(path + ""+ fname);

message = "文件上传成功!";

}

ribute("message", message);

RequestDispatcher rd = uestDispatcher("/");

d(request, response);

}

}

程序2.11

package ;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet(name="ExcelServlet",urlPatterns={"/"})

public class ExcelServlet extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException{

//指定页面在传输过程中使用的编码方式

der("Content-Encoding","gb2312");

// 设置响应的内容类型

tentType("application/-excel;charset=gb2312");

PrintWriter out = ter();

n("学号t姓名t性别t年龄t所在系");

n("95001t李勇t男t20t信息");

n("95002t刘晨t女t19t数学");

}

}

程序2.12

package ;

import .*;

import .*;

import DateFormat;

import t.*;

import .*;

import vlet;

@WebServlet("/ShowTimeServlet")

public class ShowTimeServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException{

tentType("text/html;charset=UTF-8");

der("Refresh","5");

PrintWriter out = ter();

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a HH:mm:ss");

String s = (date); // 对日期对象格式化

n("");

n("");

n("

每5秒钟刷新一次页面

");

n("

现在的时间是:"+s+"

");

n("");

n("");

}

}

程序2.13

package ;

import .*;

import t.*;

import .*;

import tion.*;

@WebServlet(name="SendRedirect",urlPatterns={"/"})

public class RedirectServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws IOException,ServletException{

String userAgent = der("User-Agent"); // 在请求对象上存储一个属性

ribute("param1", "请求作用域属性");

// 在会话对象上存储一个属性

sion().setAttribute("param2", "会话作用域属性");

if((userAgent!=null)&&(f("MSIE")!=-1)){

direct("");

}else{

direct("localhost:8080/");

}

}

}

程序2.14

package ;

import ption;

import tException;

import vlet;

import .*;

import riter;

@WebServlet("/StatusServlet")

public class StatusServlet extends HttpServlet {

protected void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

String qq = ameter("q");

if(qq==null){

n("没有提供请求参数。");

}else if(("0")){

n(tus()+"

");

n("Hello,Guys!");

}else if(("1")){

tus(_FORBIDDEN);

}else if(("2")){

tus(_UNAUTHORIZED);

}else{

ror(404,"resource cannot founddd!");

}

}

}

程序2.15

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/xml/ns/javaee

/xml/ns/javaee/web-app_3_"

version="3.0" metadata-complete="true">

Welcome to Helloweb

Welcome to Helloweb

程序2.16

package ;

import .*;

import t.*;

import tion.*;

import .*;

@WebServlet(name="ConfigDemoServlet",

urlPatterns = {"/"},

initParams = {

@WebInitParam(name="email",value="**************"), @WebInitParam(name = "telephone", value = "8899123")

})

public class ConfigDemoServlet extends HttpServlet{

String servletName = null;

ServletConfig config = null;

String email = null;

String telephone = null;

public void init(ServletConfig config) {

= config;

servletName = vletName();

email = tParameter("email");

telephone = tParameter("telephone");

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

n("");

n("配置对象");

n("Servlet名称:"+servletName+"

");

n("Email地址:"+email+"

");

n("电话:"+telephone);

n("");

}

}

程序3.1

package ;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/")

public class FileDownloadServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

// 设置文件的内容类型

tentType("image/gif");

// 设置Content-Disposition响应头,指定文件名

der("Content-Disposition",

"attachment;filename="); // 获得输出流对象

OutputStream os = putStream();

ServletContext context = getServletContext();

// 返回输入流对象

InputStream is =

ourceAsStream("/files/");

byte[] bytearray = new byte[1024];

int bytesread = 0;

// 从输入流中读取1K字节,然后写到输出流中

while((bytesread = (bytearray)) != -1 ){

// 将数据发送到客户端

(bytearray, 0, bytesread);

}

();

();

}

}

程序3.2

package ;

import .*;

import t.*;

import .*;

import ;

import vlet;

@WebServlet("/ShowSessionServlet")

public class ShowSessionServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html;charset=utf-8");

// 创建或返回用户会话对象

HttpSession session = sion(true);

String heading = null;

// 从会话对象中检索accessCount属性

Integer accessCount = (Integer)ribute("accessCount");

if(accessCount==null){

accessCount = new Integer(1);

heading = "欢迎您,首次登录该页面!";

}else{

heading = "欢迎您,再次访问该页面!";

accessCount = accessCount+1;

}

// 将accessCount作为属性存储到会话对象中

ribute("accessCount",accessCount);

PrintWriter out = ter();

n("");

n("会话跟踪示例");

n("

");

n("

"+heading

+"再次访问"+"

");

n("

");

n("

n");

String state = ()?"新会话":"旧会话";

n("

信息
会话状态:"+state+"n");

n("

会话ID:"+()+"n"); n("
创建时间:");

n(""+new Date(ationTime())+"n");

n("

最近访问时间:");

n(""+new Date(tAccessedTime())+"n");

n("

最大不活动时间:"+

InactiveInterval()+"n");

n("

Cookie:"+der("Cookie")+"n");

n("

已被访问次数:"+accessCount+"n");

n("

");

n("

");

}

}

程序3.3

package ;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/GuessNumberServlet")

public class GuessNumberServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

int magic = (int)(()*101);

HttpSession session = sion();

ribute("num",new Integer(magic));

tentType("text/html;charset=utf-8");

PrintWriter out = ter();

n("");

n("我想出一个0到100之间的数,请你猜!");

n("

method='post'>");

n("");

n("");

n("

");

n("");

}

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

int guess = nt(ameter("guess"));

HttpSession session = sion();

int magic = (Integer)ribute("num");

tentType("text/html;charset=utf-8");

PrintWriter out = ter();

n("");

if(guess==magic){

date(); // 销毁会话对象

n("祝贺你,答对了!");

n("

再猜一次.");

}else if(guess>magic){ n("太大了! 请重猜!");

}else{

n("太小了! 请重猜!");

}

n("

method='post'>");

n("");

n("");

n("

");

n("");

}

}

程序3.4

package ;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/SendCookie")

public class SendCookieServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws IOException,ServletException{

Cookie userCookie = new Cookie("username", "hacker");

Age(60*60*24*7);

kie(userCookie);

tentType("text/html;charset=UTF-8");

PrintWriter out = ter();

n("发送Cookie");

n("

已向浏览器发送一个Cookie。

");

n("");

}

}

程序3.5

package ;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/ReadCookie")

public class ReadCookieServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws IOException,ServletException{

String cookieName = "username";

String cookieValue = null;

Cookie[] cookies = kies();

if (cookies!=null){

for(int i = 0;i<;i++){

Cookie cookie = cookies[i];

if(e().equals(cookieName)) cookieValue = ue();

}

}

tentType("text/html;charset=utf-8");

PrintWriter out=ter();

n("读取Cookie");

n("

从浏览器读回一个Cookie

");

n("Cookie名:"+cookieName+"

");

n("Cookie值:"+cookieValue+"

");

n("");

}

}

程序3.6

<%@ page contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

登录页面

${e}

请输入用户名和口令:

用户名:

口 令:

自动登录

程序3.7

package ;

import ption;

import t.*;

import .*;

import vlet;

@WebServlet("/CheckUserServlet")

public class CheckUserServlet extends HttpServlet {

String message = null;

protected void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html;charset=utf-8");

String value1 = "",value2="";

Cookie cookie = null;

Cookie[] cookies = kies();

if (cookies!=null){

for(int i = 0;i<;i++){

cookie = cookies[i];

if(e().equals("username"))

value1 = ue();

if(e().equals("password"))

value2 = ue();

}

if(("admin")&&("admin")){

message = "欢迎您!"+value1+"再次登录该页面!";

sion().setAttribute("message", message);

direct("");

}else{

direct("");

}

}else{

direct("");

}

}

protected void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html;charset=utf-8");

String username = ameter("username").trim();

String password = ameter("password").trim();

if(!("admin") || !("admin")){

message = "用户名或口令不正确,请重试!";

sion().setAttribute("message",message);

direct("");

}else{

// 如果用户选中了“自动登录”复选框,向浏览器发送2个Cookie

if((ameter("check")!=null) &&

(ameter("check").equals("check"))){

Cookie nameCookie = new Cookie("username", username);

Cookie pswdCookie = new Cookie("password", password);

Age(60*60);

Age(60*60);

kie(nameCookie);

kie(pswdCookie);

}

message = "你已成功登录!";

sion().setAttribute("message",message);

direct("");

}

}

}

程序4.1

<%@ page contentType="text/html;charset = UTF-8" %>

<%! int count = 0; %>

<%

count++;

%>

该页面已被访问<%=count %> 次。

程序4.2

<%!

int anInt = 3;

boolean aBool = true;

Integer anIntObj = new Integer(3);

Float aFloatObj = new Float(8.6); %>

<%= 500+380 %>

<%= anInt*3.5/100-500 %>

<%= aBool %>

<%= () %>

<%= aFloatObj %>

程序4.3

<%@page import="" %>

<%@page import="rmat"%>

<%@page contentType="text/html;charset=UTF-8" %>

Today's date

<%

DateFormat dateFormat = eInstance();

String s = (new Date());

%>

今天的日期是:<%=s%>

程序4.4

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%!

int count = 0;

public void jspInit(){ // 覆盖jspInit()

n("");

}

public void jspDestroy(){ // 覆盖jspDestroy()

n("");

}

%>

jspInit and jspDestroy

<%count++;%>

覆盖jspInit()和jspDestroy()!

该页面被访问<%=count%>次。

程序4.5

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ page errorPage="" %>

<%

if (ameter("name")==null){

throw new RuntimeException("没有指定name 请求参数。");

}

%>

Hello, <%=ameter("name")%>

程序4.6

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ page isErrorPage="true" %>

页面发生了下面错误:<%=sage()%>

请重试!

程序4.7

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

compute area of a circle

<%

String s = ameter("radius");

if(s==null)

s = "0";

r = ouble(s);

%>

请输入圆的半径:

半径为<%= r %>的圆的面积为:<%=area(r)%>

<%!

double r = 0; // 声明一个变量r

double area(double r) { // 声明求圆面积的方法

return r * r * ;

}

%>

程序4.8

<%@ page contentType="text/html;charset=utf-8"%>

Compute Prime

<%

for(int n = 2;n < 100;n++){

int i;

for(i = 2;i < n;i++){

if(n % i==0)

break;

}

if(i==n){

%> <%=n%>  

<%

}

}

%>

程序4.9 todayDate_

public void _jspService( HttpServletRequest request,

HttpServletResponse response)

throws IOException,ServletException {

// 其他代码

PageContext pageContext = null;

HttpSession session = null;

ServletContext application = null;

ServletConfig config = null;

JspWriter out = null;

Object page = this;

// 创建有关对象的代码

pageContext = _eContext(this, request, response,

null, true, 8192, true);

session = sion();

application = vletContext();

config = vletConfig();

out = ();

// 其他代码

}

程序4.10

<%@ page isErrorPage='true' %>

<%@ page contentType="text/html;charset=utf-8"%>

页面发生了下面错误:<%=ng()%>

程序4.11

<%@ page contentType="text/html;charset=utf-8" %>

Hello

My name is Duke. What is yours?

<%! String userName="Duke"; %>

<%@include file="" %>

程序4.12 <%@ page contentType="text/html;charset=utf-8" %>

<% userName=ameter("username");%>

Hello, <%=userName%>!

程序4.13

<%@ page contentType="text/html;charset=UTF-8"%>

Hello

My name is Duke. What is yours?

<% String userName = ameter("username");

ribute("username",userName);

%>

程序4.14

<%@ page contentType="text/html;charset = UTF-8" %>

<% String userName = (String)ribute("username");%>

Hello, <%=userName%>!

程序4.15

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

站点首页面

<%@ include file=""%>

<%@ include file=""%>

<%@ include file=""%>

程序4.16

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

用户名

密 码

程序4.17

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

商品分类

程序4.18

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

圣诞惊喜!买酷派w706,赢取ipad2!

三星 S5830领取手机节优惠券,立减100元!再送:200元移动手机卡!

派派价:2068元

联想(Lenovo)G460AL-ITH 14.0英寸笔记本电脑(i3-370M 2G 500G 512

独显 DVD刻录 摄像头 Win7)特价:3199元!

程序4.19

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>


关于我们|联系我们|人才招聘|友情链接

Copyright © 2012 派派电子商城有限责任公司,8899123.

程序4.20

package ;

public class Customer{ // 属性声明

private String custName;

private String email;

private String phone;

// 构造方法的定义

public Customer(){}

public Customer(String custName, String email, String phone){

me = custName;

= email;

= phone;

}

// getter方法

public String getCustName(){ return me; }

public String getEmail(){ return ; }

public String getPhone(){ return ; }

// setter方法

public void setCustName(String custName){ me = custName; }

public void setEmail(String email){ = email; }

public void setPhone(String phone){ = phone; }

}

程序4.21

<%@ page contentType="text/html; charset=UTF-8" %>

输入客户信息

输入客户信息

客户名:
邮件地址:
电话:

程序4.22

package ;

import t.*;

import .*;

import vlet;

@WebServlet("/CustomerServlet")

public class CustomerServlet extends HttpServlet {

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ption,ServletException {

String name = ameter("custName");

String email = ameter("email");

String phone = ameter("phone");

Customer customer = new Customer(name,email,phone);

HttpSession session = sion();

synchronized(session) { ribute("customer", customer);

}

RequestDispatcher rd =

uestDispatcher("/");

d(request,response);

}

}

程序4.23

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

显示客户信息

客户信息如下

客户名:
Email地址:
电话:

程序5.1

Expression Language Example

JSP Expression Language Example

ExpressionValue
${2+5} ${2+5}
${4/5}${4/5}
${5 div 6}${5 div 6}
${5 mod 7}${5 mod 7}
${2<3}${2 < 3}
${2gt3}${2 gt 3}
${3.1 le 3.2}${3.1 le 3.2}
${(5>3)?5:3}${(5>3)?5:3}
${empty null}${empty null}
${empty param}${empty param}

程序5.2

package ; import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/VariableServlet")

public class VariableServlet extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

ribute("attrib1", new Integer(100));

HttpSession session = sion();

ribute("attrib2", "Java World!");

ServletContext application = getServletContext();

ribute("attrib3",new ());

ribute("attrib4", "请求作用域");

ribute("attrib4", "会话作用域");

ribute("attrib4", "应用作用域");

// 请求转发到JSP页面

RequestDispatcher rd =

uestDispatcher("/");

d(request, response);

}

}

程序5.3

<%@ page contentType="text/html;charset=UTF-8" %>

访问作用域变量

访问作用域变量

  • 属性1: ${attrib1}

  • 属性2: ${attrib2}

  • 属性3: ${attrib3}

  • 属性4: ${attrib4}

程序5.4

package ;

public class Address implements izable {

private String city;

private String street;

private String zipCode;

public Address() { }

public Address(String city,String street,String zipCode) {

=city;

=street;

e=zipCode;

}

// 这里省略了属性的getter方法和setter方法

}

程序5.5 package ;

public class Employee implements izable{

private String empName;

private String email;

private String phone;

private Address address;

public Employee(){}

public Employee(String empName,String email,

String phone,Address address ){

e=empName;

=email;

=phone;

s=address;

}

public void setEmpName(String empName){ e = empName; }

public void setEmail(String email) { = email; }

public void setPhone(String phone) { = phone; }

public void setAddress(Address address){ s=address;}

public String getEmpName(){ return e; }

public String getEmail() { return ; }

public String getPhone() { return ; }

public Address getAddress(){ return address; }

}

程序5.6

package ;

import .*;

import t.*;

import .*;

import s;

import ee;

import vlet;

@WebServlet("/EmployeeServlet")

public class EmployeeServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

Address address = new Address("上海市",

"科技路25号","201600");

Employee employee = new Employee("automan",

"**************","8899123",address); ribute("employee", employee);

RequestDispatcher rd =

uestDispatcher("/");

d(request, response);

}

}

程序5.7

<%@ page contentType="text/html;charset = UTF-8" %>

访问JavaBeans的属性

使用EL访问JavaBeans的属性

  • 员工名:${e}

  • Email地址:${}

  • 电话:${}

  • 客户地址:

    • 城市:${}

    • 街道:${}

    • 邮编:${e}

程序5.8

package ;

import .*;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/CollectServlet")

public class CollectServlet extends HttpServlet{

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

tentType("text/html;charset=UTF-8");

ArrayList country = new ArrayList();

("China");

("England");

("Russia");

HashMap capital = new HashMap();

("China","北京");

("England","伦敦");

("Russia","莫斯科");

ribute("country",country);

ribute("capital",capital);

RequestDispatcher rd =

uestDispatcher("/");

d(request,response);

}

}

程序5.9

<%@ page contentType="text/html;charset=UTF-8" %>

Collections Test

Accessing Collections

  • Capital of ${country[0]} is ${capital["China"]}

  • Capital of ${country[1]} is ${capital["England"]}

  • Capital of ${country[2]} is ${}

程序5.10

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ page import=".*" %>

EL隐含变量的使用

<%

Address address = new Address("上海",

"科技路25号","201600");

Employee employee = new Employee("automan",

"**************","8899123",address); ribute("employee", employee);

Cookie cookie = new Cookie("userName","Hacker");

kie(cookie);

%>

EL隐含变量的使用

EL表达式
${} ${}
${me}${me}
${}${}
${} ${}
${}${}
${} ${}

程序6.1

package ;

import .*;

import .*;

import .*;

public class HelloTag implements SimpleTag{

JspContext jspContext = null;

JspTag parent = null;

public void setJspContext(JspContext jspContext){

text = jspContext;

}

public void setParent(JspTag parent){

= parent;

}

public void setJspBody(JspFragment jspBody){

}

public JspTag getParent(){

return parent;

}

public void doTag() throws JspException, IOException{

JspWriter out = ();

("Hello, A simple tag.

");

("现在时间是:"+ new ()); }

}

程序6.2

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/xml/ns/j2ee

/xml/ns/j2ee/web-jsptaglibrary_2_"

version="2.1">

1.0

TagExample

/sample

hello

ag

empty

程序6.3

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib prefix="demo" uri="/sample" %>

Using Custom Tag

Hello Tag Example

程序6.4

package ;

import .*;

import .*;

import .*;

public class RedStarTag extends SimpleTagSupport {

public void doTag() throws JspException, IOException{

JspWriter out = getJspContext().getOut();

("*");

}

}

程序6.5

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib uri="/sample" prefix="demo" %>

User Register

请输入客户信息,带的域必须填写。

客户名
Email地址
电话

程序6.6

package ;

import .*;

import .*;

import .*;

public class WelcomeTag extends SimpleTagSupport {

private String user;

public void setUser(String user) {

= user;

}

public void doTag() throws JspException, IOException {

JspWriter out = getJspContext().getOut();

try{

if (user==null){

("Welcome, Guest!

");

}else{

("Welcome, "+user+"!

");

}

} catch(Exception e){

throw new JspException("Error in ()");}

}

}

程序6.7

<%@ taglib prefix="demo" uri="/sample" %>

Welcome Tag

程序6.8

package ;

import .*;

import .*;

import .*;

public class BodyTagDemo extends SimpleTagSupport{

public void doTag() throws JspException, IOException{

JspWriter out = getJspContext().getOut();

("输出标签体前


");

// 获得标签体内容并发送到JSP显示 getJspBody().invoke(null);

("
输出标签体后

");

}

}

程序6.9

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib prefix="demo" uri="/sample" %>

Tag With Body

Tag with body

这是标签体内容.

程序6.10

package ;

import .*;

import .*;

import .*;

public class MarkerTag extends SimpleTagSupport {

private String search = null; // search属性

public void setSearch(String search){

= search;

}

public void doTag() throws JspException, IOException{

JspWriter out = getJspContext().getOut();

StringWriter sw = new StringWriter();

getJspBody().invoke(sw);

String text = ng();

int len = ();

int oldIndex=0, newIndex=0;

while((newIndex = f(search,oldIndex))>=0){

if (newIndex

break;

}

(ing(oldIndex,newIndex));

(""+search+"");

oldIndex = newIndex + len;

}

(ing(oldIndex));

}

}

程序6.11

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib prefix="demo" uri="/sample" %>

Tag With Body

she sells sea shells on the sea shore!

程序6.12

package ;

import .*;

import .*;

import .*;

public class LoopTag extends SimpleTagSupport{

private int count = 0;

public void setCount(int count){

= count;

}

public void doTag() throws JspException,IOException{

JspWriter out = getJspContext().getOut();

StringWriter sw = new StringWriter();

getJspBody().invoke(sw);

String text = ng();

for(int i = 1;i<=count;i++){

(""+text+"");

}

}

}

程序6.13

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib prefix="demo" uri="/sample" %>

Loop Tag Example

这是标签体内容!

程序6.14

package ;

// 这里省略了若干导入语句

@WebServlet("/ProductServlet")

public class ProductServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

Connection dbconn = null;

public void init() {

String driver = "";

String dburl = "jdbc:postgresql://127.0.0.1:5432/postgres";

String username = "postgres";

String password = "postgres";

try{

e(driver); // 加载驱动程序

// 创建连接对象

dbconn = nection(

dburl,username,password);

}catch(ClassNotFoundException e1){

}catch(SQLException e2){}

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

ArrayList prodList = null;

prodList = new ArrayList();

try{

String sql="SELECT * FROM products WHERE prod_id < 'P4'";

PreparedStatement pstmt = eStatement(sql);

ResultSet result = eQuery();

while(()){

Product product = new Product();

d_id(ing("prod_id"));

me(ing("pname"));

ce(ble("price"));

ck(("stock"));

(product);

}

if(!y()){

sion().setAttribute("prodList",prodList);

direct("/helloweb/");

}else{

direct("/helloweb/");

}

}catch(SQLException e){

tackTrace();

}

}

}

程序6.15

package ;

import .*;

import .*;

import .*;

import .*;

import t;

public class ProductTag extends SimpleTagSupport{

private ArrayList productList;

public void setProductList(ArrayList productList){

tList = productList;

}

public void doTag() throws JspException, IOException{

for(Product product:productList){

getJspContext().setAttribute("product", product);

getJspBody().invoke(null);

}

}

}

程序6.16

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib prefix="demo" uri="/sample" %>

商品信息

商品号商品名价格库存量
${_id} ${} ${} ${}

程序6.17

package ;

import .*;

import .*;

import .*;

public class MathTag extends SimpleTagSupport

implements DynamicAttributes{

double num = 0;

String output = "";

public void setNum(double num){

= num;

}

public void setDynamicAttribute(String uri, String localName,

Object value ) throws JspException{

double val = ouble((String)value);

if (localName == "min"){

output = output + " "+num+"与"+val+"的最小值" +

"" + (num, val) + "";

} else if (localName == "max"){

output = output + " "+num+"与"+val+"的最大值" +

"" + (num, val) + "";

} else if (localName == "pow"){

output = output + ""+num+" 的 "+val+

" 次方"+""+(num, val)+"";

}

}

public void doTag() throws JspException, IOException{

getJspContext().getOut().print(output);

}

}

程序6.18

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib prefix="demo" uri="/sample" %>

动态属性

动态属性的使用

程序6.19

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib prefix="demo" uri="/sample" %>

Hello!

Good Bye!!

I am Dumb

程序6.20

package ;

import .*;

import .*;

import .*;

public class SwitchTag extends SimpleTagSupport{

private String conditionValue;

private boolean caseFound = false;

public void setConditionValue(String value) {

ionValue =value;

}

public String getConditionValue() {

return conditionValue;

}

public void setCaseFound(boolean caseFound){

und = caseFound;

}

public boolean getCaseFound(){

return caseFound;

}

public void doTag() throws JspException,IOException{

if (("")){

getJspContext().getOut().print

("You did not provide 'action' parameter.");

}else{

getJspBody().invoke(null);

}

}

}

程序6.21

package ;

import .*;

import .*;

import .*; public class CaseTag extends SimpleTagSupport{

private String caseValue;

public void setCaseValue(String caseValue){

lue = caseValue;

}

public void doTag() throws JspException,IOException{

SwitchTag parent =(SwitchTag) getParent(); // 返回父标签引用

String conditionValue = ditionValue();

if ((caseValue)){

eFound(true);

getJspBody().invoke(null);

}else{

return; // 不执行标签体

}

}

}

程序6.22

package ;

import .*;

import .*;

import .*;

public class DefaultTag extends SimpleTagSupport {

public void doTag() throws JspException,IOException{

SwitchTag parent =(SwitchTag) getParent();

if(eFound()){

return;

}else{

getJspBody().invoke(null);

}

}

}

程序6.23

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib prefix="c" uri="/jsp/jstl/core" %>

Set Tag Example

OLYMPUS数码相机

程序6.24

<%@ taglib uri="/jsp/jstl/core" prefix="c" %>

${y}*${x}=${x*y}

程序6.25 foreach_

<%@ taglib uri="/jsp/jstl/core" prefix="c" %>

Example of forEach

Example of forEach
value of x t
${x} ${} ${t} ${} ${} ${}

程序6.26

package ;

import ption;

import tDispatcher;

import tException;

import vlet;

import rvlet;

import rvletRequest;

import rvletResponse;

import ;

import ist;

import ;

@WebServlet("/BooksServlet")

public class BooksServlet extends HttpServlet {

@Override

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

List books = new ArrayList();

Book book1 = new Book("978-7-302-23059-5","Java语言程序设计",45.00);

Book book2 = new Book("978-7-302-21540-0","Java Web编程技术",39.00);

Book book3 = new Book("978-7-302-24130-0","C #入门经典",99.80);

(book1);

(book2);

(book3);

ribute("books", books); RequestDispatcher rd = uestDispatcher("/");

d(request, response);

}

}

程序6.27

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ page import=".*," %>

<%@ taglib uri="/jsp/jstl/core" prefix="c" %>

图书列表

varStatus="status">

<%--为奇数行和偶数行设置不同的背景颜色--%>

<%--用EL访问作用域变量的成员--%>

书号书名价格
${} ${} ${}

程序6.28

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib uri="/jsp/jstl/core" prefix="c" %>

value="白日依山尽,黄河入海流,欲穷千里目,更上一层楼" />

登鹳雀楼 王之涣

${line}

程序6.29

<%@ taglib uri="/jsp/jstl/core" prefix="c" %> <%@ page contentType="text/html;charset=UTF-8" %>

Welcome Page

You are welcome to my home page!

程序6.30

<%@ page contentType="text/html; charset=UTF-8"%>


关于我们|联系我们|人才招聘|友情链接

Copyright © 2012 派派电子商城有限责任公司,8899123.

E-mail Address:${}

程序7.1

package ;

import izable;

public class Product implements Serializable {

private String prod_id;

private String pname;

private double price;

private int stock;

public Product() { }

public Product(String prod_id, String pname,

double price, int stock) {

_id = prod_id;

= pname;

= price;

= stock;

}

public String getProd_id() {

return prod_id;

}

public void setProd_id(String prod_id) {

_id = prod_id;

}

public String getPname() {

return pname;

}

public void setPname(String pname) {

= pname;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

= price;

}

public int getStock() {

return stock;

} public void setStock(int stock) {

= stock;

}

}

程序7.2

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

商品查询

请输入商品号:

查询所有商品

程序7.3

package ;

import .*;

import .*;

import .*;

import t.*;

import .*;

import vlet;

@WebServlet("/")

public class QueryProductServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

Connection dbconn = null;

public void init() {

String driver = "";

String dburl = "jdbc:postgresql://127.0.0.1:5432/postgres";

String username = "postgres";

String password = "postgres";

try{

e(driver); // 加载驱动程序

// 创建连接对象

dbconn = nection(

dburl,username,password);

}catch(ClassNotFoundException e1){

n(e1);

}catch(SQLException e2){}

}

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

String productid = ameter("productid");

try{

String sql="SELECT * FROM products WHERE prod_id = ?";

PreparedStatement pstmt = eStatement(sql);

ing(1,productid);

ResultSet rst = eQuery(); if(()){

Product product = new Product();

d_id(ing("prod_id"));

me(ing("pname"));

ce(ble("price"));

ck(("stock"));

sion().setAttribute("product", product);

direct("/helloweb/");

}else{

direct("/helloweb/");

}

}catch(SQLException e){

tackTrace();

}

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

ArrayList productList = null;

productList = new ArrayList();

try{

String sql="SELECT * FROM products";

PreparedStatement pstmt = eStatement(sql);

ResultSet result = eQuery();

while(()){

Product product = new Product();

d_id(ing("prod_id"));

me(ing("pname"));

ce(ble("price"));

ck(("stock"));

(product);

}

if(!y()){

sion().setAttribute("productList",productList);

direct("/helloweb/");

}else{

direct("/helloweb/");

}

}catch(SQLException e){

tackTrace();

}

}

public void destroy(){

try {

();

}catch(Exception e){

tackTrace();

}

}

}

程序7.4

<%@ page contentType="text/html; charset=utf-8" %>

scope="session">

商品信息

商品号:
商品名:
价格:
库存量:

程序7.5

<%@ page contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import=".*,t" %>

显示所有商品

<% ArrayList productList =

(ArrayList)ribute("productList");

for(Product product:productList){

%>

<%

}

%>

商品号商品名价格数量
<%=d_id() %> <%=me() %> <%=ce() %> <%=ck() %>

程序7.6

<%@ page contentType="text/html; charset=UTF-8" %>

该商品不存在。返回

程序7.7

name="jdbc/sampleDS"

type="urce"

maxActive="4"

maxIdle="2"

username="paipaistore" maxWait="5000"

driverClassName=""

password="paipaistore"

url="jdbc:postgresql://localhost:5432/paipaistore"/>

程序7.8

package ;

import .*;

import .*;

import urce;

import t.*;

import vlet;

import .*;

import t;

import .*;

import .*;

@WebServlet("/")

public class ProductQueryServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

DataSource dataSource;

public void init() {

try {

Context context = new InitialContext();

dataSource =

(DataSource)("java:comp/env/jdbc/sampleDS");

}catch(NamingException ne){

n("Exception:"+ne);

}

}

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

Connection dbconn = nection();

// 代码同程序7.3的doPost()

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

Connection dbconn = nection();

// 代码同程序7.3的doGet()

}

}

程序7.9

global = "jdbc/paipaistore"

name = "jdbc/sampleDS"

type = "urce"/>

WEB-INF/

程序7.10 package ;

import izable;

public class Customer implements Serializable{

private String cust_id;

private String cname;

private String email;

private double balance;

public String getCust_id() {

return cust_id;

}

public void setCust_id(String cust_id) {

_id = cust_id;

}

public String getCname() {

return cname;

}

public void setCname(String cname) {

= cname;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

= email;

}

public double getBalance() {

return balance;

}

public void setBalance(double balance) {

e = balance;

}

}

程序7.11

package ;

import .*;

import urce;

import .*;

public class BaseDao {

DataSource dataSource;

// 在构造方法中返回数据源对象

public BaseDao () {

try {

Context context = new InitialContext();

dataSource =

(DataSource)("java:comp/env/jdbc/sampleDS");

}catch(NamingException ne){

n("Exception:"+ne);

}

}

// 返回一个连接对象

public Connection getConnection()throws Exception{

return nection();

}

} 程序7.12

package ;

import .*;

import ist;

import er;

public class CustomerDao extends BaseDao{

// 插入一条客户记录

public boolean addCustomer(Customer customer){

String sql = "INSERT INTO customers" +

"(cust_id,cname,email,balance)VALUES(?,?,?,?)";

try(

Connection conn = nection();

PreparedStatement pstmt = eStatement(sql))

{

ing(1,t_id());

ing(2,me());

ing(3,il());

ble(4,ance());

eUpdate();

return true;

}catch(SQLException se){

tackTrace();

return false;

}

}

// 按姓名检索客户记录

public Customer findByName(String cname){

String sql = "SELECT cust_id,cname,email,balance" +

" FROM customers WHERE cname=?";

Customer customer = new Customer();

try(

Connection conn = nection();

PreparedStatement pstmt = eStatement(sql)){

ing(1,cname);

try(ResultSet rst = eQuery()){

if(()){

t_id(ing("cust_id"));

me(ing("cname"));

il(ing("email"));

ance(ble("balance"));

}

}

}catch(SQLException se){

return null;

}

return customer;

}

// 查询所有客户信息

public ArrayList findAllCustomer(){

Customer customer = new Customer();

ArrayList custList = new ArrayList();

String sql = "SELECT * FROM customers";

try(

Connection conn = nection();

PreparedStatement pstmt = eStatement(sql);

ResultSet rst = eQuery()){ while(()){

t_id(ing("cust_id"));

me(ing("cname"));

il(ing("email"));

ance(ble("balance"));

(customer);

}

return custList;

}catch(SQLException e){

tackTrace();

return null;

}

}

}

程序7.13

<%@ page contentType="text/html; charset=UTF-8" %>

Input a Customer

${result}

请输入一条客户记录

客户号:
客户名:
Email:
余额:

程序7.14

package ;

import .*;

import t.*;

import .*;

import er;

import erDao;

import vlet;

@WebServlet("/")

public class AddCustomerServlet extends HttpServlet{

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

CustomerDao dao = new CustomerDao();

Customer customer = new Customer();

String message = null;

try{

t_id(ameter("cust_id"));

// 将传递来的字符串重新使用utf-8编码,以免产生乱码

me(new String(ameter("cname")

.getBytes("iso-8859-1"),"UTF-8")); il(new String(ameter("email")

.getBytes("iso-8859-1"),"UTF-8"));

ance(

ouble(ameter("balance")));

boolean success = tomer(customer);

if(success){

message = "

  • 成功插入一条记录!
  • ";

    }else{

    message = "

  • 插入记录错误!
  • ";

    }

    }catch(Exception e){

    message = "

  • 插入记录错误!
  • ";

    }

    ribute("result", message);

    RequestDispatcher rd =

    getServletContext().getRequestDispatcher("/");

    d (request,response);

    }

    }

    程序8.1

    package er;

    import .*;

    import ;

    import t.*;

    import .*;

    import tener;

    @WebListener // 使用注解注册监听器

    public class MyContextListener implements ServletContextListener,

    ServletContextAttributeListener{

    private ServletContext context = null;

    public void contextInitialized(ServletContextEvent sce){

    Context ctx = null;

    DataSource dataSource = null;

    context = vletContext();

    try{

    if(ctx == null){

    ctx = new InitialContext();

    }

    dataSource = (DataSource)("java:comp/env/jdbc/sampleDS");

    }catch(NamingException ne){

    ("Exception:"+ne);

    }

    ribute("dataSource",dataSource); // 添加属性

    ("应用程序已启动:"+new Date());

    }

    public void contextDestroyed(ServletContextEvent sce){

    context = vletContext();

    Attribute("dataSource");

    ("应用程序已关闭:"+new Date());

    }

    public void attributeAdded(ServletContextAttributeEvent sce){

    context = vletContext();

    ("添加一个属性:"+e()+":"+ue());

    }

    public void attributeRemoved(ServletContextAttributeEvent sce){ context = vletContext();

    ("删除一个属性:"+e()+":"+ue());

    }

    public void attributeReplaced(ServletContextAttributeEvent sce){

    context = vletContext();

    ("替换一个属性:"+e()+":"+ue());

    }

    }

    程序8.2

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ page import=".*,.*" %>

    <%

    DataSource dataSource =

    (DataSource)ribute("dataSource");

    Connection conn = nection();

    Statement stmt = Statement();

    ResultSet rst = eQuery(

    "SELECT * FROM products WHERE prod_id>'P2'");

    %>

    Listener Demo

    商品表中信息

    <% while (()){ %>

    <% } %>

    商品号商品名价格库存
    <%= ing(1) %> <%= ing(2) %> <%= ble(3) %> <%= (4) %>

    程序8.3

    package er;

    import rvletRequest;

    import tRequestEvent;

    import tRequestListener;

    import tener;

    @WebListener

    public class MyRequestListener

    implements ServletRequestListener{

    private int count = 0;

    public void requestInitialized(ServletRequestEvent re){

    HttpServletRequest request=

    (HttpServletRequest)vletRequest();

    if(uestURI().endsWith("")){

    count++;

    vletContext().setAttribute("count",new Integer(count));

    }

    }

    public void requestDestroyed(ServletRequestEvent re){

    } }

    程序8.4

    <%@ page contentType="text/html;charset=UTF-8" %>

    请求监听器示例

    欢迎您,您的IP地址是${Addr}

    自应用程序启动以来,该页面被访问了

    ${}

    程序8.5

    package er;

    import t.*;

    import .*;

    import ist;

    import tener;

    @WebListener

    public class MySessionListener implements HttpSessionListener{

    private ServletContext context = null;

    public void sessionCreated(HttpSessionEvent se){

    HttpSession session = sion();

    context = vletContext();

    ArrayList sessionList = (ArrayList)

    ribute("sessionList");

    if(sessionList==null){

    sessionList = new ArrayList();

    ribute("sessionList",sessionList);

    }else{

    (session);

    }

    ("创建一个会话:"+());

    }

    public void sessionDestroyed(HttpSessionEvent se){

    HttpSession session = sion();

    context = vletContext();

    ArrayList sessionList = (ArrayList)

    ribute("sessionList");

    (session);

    ("销毁一个会话:"+());

    }

    }

    程序8.6

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ page import=".* " %>

    <%@ taglib prefix="c" uri="/jsp/jstl/core" %>

    会话监听器示例

    2023年12月14日发(作者:乐月华)

    Java Web编程技术(第2版)

    程序1.1

    用户注册

    用户注册

    姓名:

    年龄:

    性别:

    兴趣:文学

    体育

    电脑

    学历:

    邮件地址:

    程序1.2

    派派电子商城

    用户名

    密 码

    onclick="check();">

    三星 S5830领取手机节优惠券,立减100元!再送:200元移动手机卡!

    派派价:2068元

    联想(Lenovo)G460AL-ITH 14.0英寸笔记本电脑(i3-370M 2G 500G 512

    独显 DVD刻录 摄像头 Win7)特价:3199元!

    程序1.3

    body {

    font-family:Verdana; font-size:14px; margin:10;}

    #container {

    margin:0 auto; width:100%;

    }

    #header {

    height:50px; background:#9c6; margin-bottom:5px;

    }

    #topmenu {

    height:30px; background:#c0c0c0; margin-bottom:5px;

    }

    #middle {

    margin-bottom:5px;

    }

    #leftmenu {

    float:left; width:180px; background:#cf9;

    }

    #content {

    float:left; background:#ffa;

    }

    #footer {

    height:60px; background:#9c6;

    clear:both;

    } 程序1.4

    用户注册

    method="post" onSubmit="return custCheck()">

    请输入客户信息:

    客户名:
    Email地址:
    电话:

    程序1.5

    package ;

    import ption;

    import tException;

    import vlet;

    import rvlet;

    import rvletRequest;

    import rvletResponse;

    import .*; @WebServlet(name = "helloServlet", urlPatterns = { "/" })

    public class HelloServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    n("");

    n("Hello Servlet");

    n("

    Hello,World!

    ");

    n("现在的时间是:"+new ());

    n("");

    n("");

    }

    }

    程序1.6

    <%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    简单的JSP页面

    Hello,World!

    现在的时间是:<%=new () %>

    程序2.1

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    登录页面

    用户名:
    密  码:

    程序2.2

    package ;

    import .*;

    import t.*;

    import .*; import vlet;

    @WebServlet(name="LoginServlet",urlPatterns={"/"})

    public class LoginServlet extends HttpServlet {

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    String username = ameter("username");

    String password = ameter("password");

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    n("");

    if("admin".equals(username)&& "admin".equals(password)){

    n("登录成功!欢迎您, "+username);

    }else{

    n("对不起!您的用户名或密码不正确.");

    }

    n("");

    }

    }

    程序2.3

    package ;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/ClientInfoServlet")

    public class ClientInfoServlet extends HttpServlet {

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    n("");

    n("获取客户端信息");

    n("");

    n("

    客户端信息:

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    ");

    n("

    客户主机名" + oteHost() + "
    客户IP地址" + oteAddr() + "
    端口" + otePort() + "
    请求方法" + hod() + "
    请求协议" + tocol() + "
    请求URI" + uestURI() + "
    ");

    n("");

    }

    public void doPost(HttpServletRequest request,

    HttpServletResponse response) throws ServletException, IOException {

    doGet(request, response);

    }

    }

    程序2.4

    package ;

    import .*;

    import t.*;

    import .*;

    import ation;

    import vlet;

    @WebServlet("/ShowHeaders")

    public class ShowHeadersServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException{

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    n("");

    n("请求头信息");

    n("服务器收到的请求头信息

    ");

    n(hod()+" "

    +uestURI()+" "

    +ryString()+" "

    +tocol()+"

    ");

    Enumeration headers = derNames();

    while(eElements()){

    String header = (String) ement();

    String value = der(header);

    n(header+" = "+value+"

    ");

    }

    n("");

    }

    }

    程序2.5

    package ;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet(name="LoginServlet",urlPatterns={"/"})

    public class LoginServlet extends HttpServlet {

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    String username = ameter("username");

    String password = ameter("password");

    // 用户名和口令均为admin,认为登录成功

    if(("admin")&&("admin")){

    ribute("username", username);

    RequestDispatcher rd = uestDispatcher("/");

    d(request, response);

    }else{

    RequestDispatcher rd =

    uestDispatcher("/");

    d(request, response);

    }

    }

    }

    程序2.6

    Your are welcome!

    ${username}

    程序2.7

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    简单测试

    请回答下面的问题:

    1. Sun公司于2010年被Oracle公司收购。

    正确

    错误

    2. Windows操作系统是哪个公司的产品?

    Apple公司

    IBM公司

    Microsoft公司

    3.下面的程序设计语言,哪些是面向对象的?

    Java语言

    C语言

    C++语言

    4.编写Servlet程序应继承哪个类?

    交卷请点击:

    重答请点击:

    程序2.8

    package ;

    import ption;

    import riter;

    import tException;

    import vlet;

    import rvlet;

    import rvletRequest;

    import rvletResponse;

    @WebServlet(name="SimpleTestServlet",urlPatterns={"/"}) public class SimpleTestServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    String quest1 = ameter("quest1");

    String quest2 = ameter("quest2");

    String[] quest3 = ameterValues("quest3");

    String quest4 = ameter("quest4").trim();

    int score = 0;

    if(quest1!=null && ("1")){

    score = score+25; // 答对一道题加25分

    }

    if(quest2!=null&& ("3")){

    score = score+25;

    }

    if(quest3!=null&&==2&&quest3[0].equals("1")&&

    quest3[1].equals("3")){

    score = score+25;

    }

    if(quest4!=null&& (("HttpServlet")||

    ("rvlet"))){

    score = score+25;

    }

    n("");

    n("测试结果");

    n("");

    n("你的成绩是:"+score+"分");

    n("");

    }

    }

    程序2.9

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    上传文件

    ${message}

    method="post">

    文件上传
    会员号:
    文件名:

    程序2.10

    package ;

    import .*;

    import t.*;

    import .*;

    import tion.*;

    @WebServlet(name="FileUploadServlet",urlPatterns={"/"})

    @MultipartConfig(location="D:",fileSizeThreshold=1024)

    public class FileUploadServlet extends HttpServlet{

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    // 返回Web应用程序文档根目录

    String path = vletContext().getRealPath("/");

    String mnumber = ameter("mnumber");

    Part p = t("fileName");

    String message="";

    if(e() >1024*1024){ // 上传的文件不能超过1MB大小

    ();

    message = "文件太大,不能上传!";

    }else{

    path = path + "member" +mnumber;

    File f = new File(path);

    if( !()){ // 若目录不存在,则创建目录

    ();

    }

    String h = der("content-disposition");

    // 得到文件名

    String fname = ing(dexOf("")+1, ()-1);

    (path + ""+ fname);

    message = "文件上传成功!";

    }

    ribute("message", message);

    RequestDispatcher rd = uestDispatcher("/");

    d(request, response);

    }

    }

    程序2.11

    package ;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet(name="ExcelServlet",urlPatterns={"/"})

    public class ExcelServlet extends HttpServlet{

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException{

    //指定页面在传输过程中使用的编码方式

    der("Content-Encoding","gb2312");

    // 设置响应的内容类型

    tentType("application/-excel;charset=gb2312");

    PrintWriter out = ter();

    n("学号t姓名t性别t年龄t所在系");

    n("95001t李勇t男t20t信息");

    n("95002t刘晨t女t19t数学");

    }

    }

    程序2.12

    package ;

    import .*;

    import .*;

    import DateFormat;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/ShowTimeServlet")

    public class ShowTimeServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException{

    tentType("text/html;charset=UTF-8");

    der("Refresh","5");

    PrintWriter out = ter();

    Date date = new Date();

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a HH:mm:ss");

    String s = (date); // 对日期对象格式化

    n("");

    n("");

    n("

    每5秒钟刷新一次页面

    ");

    n("

    现在的时间是:"+s+"

    ");

    n("");

    n("");

    }

    }

    程序2.13

    package ;

    import .*;

    import t.*;

    import .*;

    import tion.*;

    @WebServlet(name="SendRedirect",urlPatterns={"/"})

    public class RedirectServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws IOException,ServletException{

    String userAgent = der("User-Agent"); // 在请求对象上存储一个属性

    ribute("param1", "请求作用域属性");

    // 在会话对象上存储一个属性

    sion().setAttribute("param2", "会话作用域属性");

    if((userAgent!=null)&&(f("MSIE")!=-1)){

    direct("");

    }else{

    direct("localhost:8080/");

    }

    }

    }

    程序2.14

    package ;

    import ption;

    import tException;

    import vlet;

    import .*;

    import riter;

    @WebServlet("/StatusServlet")

    public class StatusServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    String qq = ameter("q");

    if(qq==null){

    n("没有提供请求参数。");

    }else if(("0")){

    n(tus()+"

    ");

    n("Hello,Guys!");

    }else if(("1")){

    tus(_FORBIDDEN);

    }else if(("2")){

    tus(_UNAUTHORIZED);

    }else{

    ror(404,"resource cannot founddd!");

    }

    }

    }

    程序2.15

    xmlns:xsi="/2001/XMLSchema-instance"

    xsi:schemaLocation="/xml/ns/javaee

    /xml/ns/javaee/web-app_3_"

    version="3.0" metadata-complete="true">

    Welcome to Helloweb

    Welcome to Helloweb

    程序2.16

    package ;

    import .*;

    import t.*;

    import tion.*;

    import .*;

    @WebServlet(name="ConfigDemoServlet",

    urlPatterns = {"/"},

    initParams = {

    @WebInitParam(name="email",value="**************"), @WebInitParam(name = "telephone", value = "8899123")

    })

    public class ConfigDemoServlet extends HttpServlet{

    String servletName = null;

    ServletConfig config = null;

    String email = null;

    String telephone = null;

    public void init(ServletConfig config) {

    = config;

    servletName = vletName();

    email = tParameter("email");

    telephone = tParameter("telephone");

    }

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    n("");

    n("配置对象");

    n("Servlet名称:"+servletName+"

    ");

    n("Email地址:"+email+"

    ");

    n("电话:"+telephone);

    n("");

    }

    }

    程序3.1

    package ;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/")

    public class FileDownloadServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    // 设置文件的内容类型

    tentType("image/gif");

    // 设置Content-Disposition响应头,指定文件名

    der("Content-Disposition",

    "attachment;filename="); // 获得输出流对象

    OutputStream os = putStream();

    ServletContext context = getServletContext();

    // 返回输入流对象

    InputStream is =

    ourceAsStream("/files/");

    byte[] bytearray = new byte[1024];

    int bytesread = 0;

    // 从输入流中读取1K字节,然后写到输出流中

    while((bytesread = (bytearray)) != -1 ){

    // 将数据发送到客户端

    (bytearray, 0, bytesread);

    }

    ();

    ();

    }

    }

    程序3.2

    package ;

    import .*;

    import t.*;

    import .*;

    import ;

    import vlet;

    @WebServlet("/ShowSessionServlet")

    public class ShowSessionServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    tentType("text/html;charset=utf-8");

    // 创建或返回用户会话对象

    HttpSession session = sion(true);

    String heading = null;

    // 从会话对象中检索accessCount属性

    Integer accessCount = (Integer)ribute("accessCount");

    if(accessCount==null){

    accessCount = new Integer(1);

    heading = "欢迎您,首次登录该页面!";

    }else{

    heading = "欢迎您,再次访问该页面!";

    accessCount = accessCount+1;

    }

    // 将accessCount作为属性存储到会话对象中

    ribute("accessCount",accessCount);

    PrintWriter out = ter();

    n("");

    n("会话跟踪示例");

    n("

    ");

    n("

    "+heading

    +"再次访问"+"

    ");

    n("

    ");

    n("

    n");

    String state = ()?"新会话":"旧会话";

    n("

    信息
    会话状态:"+state+"n");

    n("

    会话ID:"+()+"n"); n("
    创建时间:");

    n(""+new Date(ationTime())+"n");

    n("

    最近访问时间:");

    n(""+new Date(tAccessedTime())+"n");

    n("

    最大不活动时间:"+

    InactiveInterval()+"n");

    n("

    Cookie:"+der("Cookie")+"n");

    n("

    已被访问次数:"+accessCount+"n");

    n("

    ");

    n("

    ");

    }

    }

    程序3.3

    package ;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/GuessNumberServlet")

    public class GuessNumberServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    int magic = (int)(()*101);

    HttpSession session = sion();

    ribute("num",new Integer(magic));

    tentType("text/html;charset=utf-8");

    PrintWriter out = ter();

    n("");

    n("我想出一个0到100之间的数,请你猜!");

    n("

    method='post'>");

    n("");

    n("");

    n("

    ");

    n("");

    }

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    int guess = nt(ameter("guess"));

    HttpSession session = sion();

    int magic = (Integer)ribute("num");

    tentType("text/html;charset=utf-8");

    PrintWriter out = ter();

    n("");

    if(guess==magic){

    date(); // 销毁会话对象

    n("祝贺你,答对了!");

    n("

    再猜一次.");

    }else if(guess>magic){ n("太大了! 请重猜!");

    }else{

    n("太小了! 请重猜!");

    }

    n("

    method='post'>");

    n("");

    n("");

    n("

    ");

    n("");

    }

    }

    程序3.4

    package ;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/SendCookie")

    public class SendCookieServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws IOException,ServletException{

    Cookie userCookie = new Cookie("username", "hacker");

    Age(60*60*24*7);

    kie(userCookie);

    tentType("text/html;charset=UTF-8");

    PrintWriter out = ter();

    n("发送Cookie");

    n("

    已向浏览器发送一个Cookie。

    ");

    n("");

    }

    }

    程序3.5

    package ;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/ReadCookie")

    public class ReadCookieServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws IOException,ServletException{

    String cookieName = "username";

    String cookieValue = null;

    Cookie[] cookies = kies();

    if (cookies!=null){

    for(int i = 0;i<;i++){

    Cookie cookie = cookies[i];

    if(e().equals(cookieName)) cookieValue = ue();

    }

    }

    tentType("text/html;charset=utf-8");

    PrintWriter out=ter();

    n("读取Cookie");

    n("

    从浏览器读回一个Cookie

    ");

    n("Cookie名:"+cookieName+"

    ");

    n("Cookie值:"+cookieValue+"

    ");

    n("");

    }

    }

    程序3.6

    <%@ page contentType="text/html;charset=UTF-8"

    pageEncoding="UTF-8"%>

    登录页面

    ${e}

    请输入用户名和口令:

    用户名:

    口 令:

    自动登录

    程序3.7

    package ;

    import ption;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/CheckUserServlet")

    public class CheckUserServlet extends HttpServlet {

    String message = null;

    protected void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    tentType("text/html;charset=utf-8");

    String value1 = "",value2="";

    Cookie cookie = null;

    Cookie[] cookies = kies();

    if (cookies!=null){

    for(int i = 0;i<;i++){

    cookie = cookies[i];

    if(e().equals("username"))

    value1 = ue();

    if(e().equals("password"))

    value2 = ue();

    }

    if(("admin")&&("admin")){

    message = "欢迎您!"+value1+"再次登录该页面!";

    sion().setAttribute("message", message);

    direct("");

    }else{

    direct("");

    }

    }else{

    direct("");

    }

    }

    protected void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    tentType("text/html;charset=utf-8");

    String username = ameter("username").trim();

    String password = ameter("password").trim();

    if(!("admin") || !("admin")){

    message = "用户名或口令不正确,请重试!";

    sion().setAttribute("message",message);

    direct("");

    }else{

    // 如果用户选中了“自动登录”复选框,向浏览器发送2个Cookie

    if((ameter("check")!=null) &&

    (ameter("check").equals("check"))){

    Cookie nameCookie = new Cookie("username", username);

    Cookie pswdCookie = new Cookie("password", password);

    Age(60*60);

    Age(60*60);

    kie(nameCookie);

    kie(pswdCookie);

    }

    message = "你已成功登录!";

    sion().setAttribute("message",message);

    direct("");

    }

    }

    }

    程序4.1

    <%@ page contentType="text/html;charset = UTF-8" %>

    <%! int count = 0; %>

    <%

    count++;

    %>

    该页面已被访问<%=count %> 次。

    程序4.2

    <%!

    int anInt = 3;

    boolean aBool = true;

    Integer anIntObj = new Integer(3);

    Float aFloatObj = new Float(8.6); %>

    <%= 500+380 %>

    <%= anInt*3.5/100-500 %>

    <%= aBool %>

    <%= () %>

    <%= aFloatObj %>

    程序4.3

    <%@page import="" %>

    <%@page import="rmat"%>

    <%@page contentType="text/html;charset=UTF-8" %>

    Today's date

    <%

    DateFormat dateFormat = eInstance();

    String s = (new Date());

    %>

    今天的日期是:<%=s%>

    程序4.4

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%!

    int count = 0;

    public void jspInit(){ // 覆盖jspInit()

    n("");

    }

    public void jspDestroy(){ // 覆盖jspDestroy()

    n("");

    }

    %>

    jspInit and jspDestroy

    <%count++;%>

    覆盖jspInit()和jspDestroy()!

    该页面被访问<%=count%>次。

    程序4.5

    <%@ page contentType="text/html; charset=UTF-8" %>

    <%@ page errorPage="" %>

    <%

    if (ameter("name")==null){

    throw new RuntimeException("没有指定name 请求参数。");

    }

    %>

    Hello, <%=ameter("name")%>

    程序4.6

    <%@ page contentType="text/html; charset=UTF-8" %>

    <%@ page isErrorPage="true" %>

    页面发生了下面错误:<%=sage()%>

    请重试!

    程序4.7

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    compute area of a circle

    <%

    String s = ameter("radius");

    if(s==null)

    s = "0";

    r = ouble(s);

    %>

    请输入圆的半径:

    半径为<%= r %>的圆的面积为:<%=area(r)%>

    <%!

    double r = 0; // 声明一个变量r

    double area(double r) { // 声明求圆面积的方法

    return r * r * ;

    }

    %>

    程序4.8

    <%@ page contentType="text/html;charset=utf-8"%>

    Compute Prime

    <%

    for(int n = 2;n < 100;n++){

    int i;

    for(i = 2;i < n;i++){

    if(n % i==0)

    break;

    }

    if(i==n){

    %> <%=n%>  

    <%

    }

    }

    %>

    程序4.9 todayDate_

    public void _jspService( HttpServletRequest request,

    HttpServletResponse response)

    throws IOException,ServletException {

    // 其他代码

    PageContext pageContext = null;

    HttpSession session = null;

    ServletContext application = null;

    ServletConfig config = null;

    JspWriter out = null;

    Object page = this;

    // 创建有关对象的代码

    pageContext = _eContext(this, request, response,

    null, true, 8192, true);

    session = sion();

    application = vletContext();

    config = vletConfig();

    out = ();

    // 其他代码

    }

    程序4.10

    <%@ page isErrorPage='true' %>

    <%@ page contentType="text/html;charset=utf-8"%>

    页面发生了下面错误:<%=ng()%>

    程序4.11

    <%@ page contentType="text/html;charset=utf-8" %>

    Hello

    My name is Duke. What is yours?

    <%! String userName="Duke"; %>

    <%@include file="" %>

    程序4.12 <%@ page contentType="text/html;charset=utf-8" %>

    <% userName=ameter("username");%>

    Hello, <%=userName%>!

    程序4.13

    <%@ page contentType="text/html;charset=UTF-8"%>

    Hello

    My name is Duke. What is yours?

    <% String userName = ameter("username");

    ribute("username",userName);

    %>

    程序4.14

    <%@ page contentType="text/html;charset = UTF-8" %>

    <% String userName = (String)ribute("username");%>

    Hello, <%=userName%>!

    程序4.15

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    站点首页面

    <%@ include file=""%>

    <%@ include file=""%>

    <%@ include file=""%>

    程序4.16

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    用户名

    密 码

    程序4.17

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    商品分类

    程序4.18

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    圣诞惊喜!买酷派w706,赢取ipad2!

    三星 S5830领取手机节优惠券,立减100元!再送:200元移动手机卡!

    派派价:2068元

    联想(Lenovo)G460AL-ITH 14.0英寸笔记本电脑(i3-370M 2G 500G 512

    独显 DVD刻录 摄像头 Win7)特价:3199元!

    程序4.19

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>


    关于我们|联系我们|人才招聘|友情链接

    Copyright © 2012 派派电子商城有限责任公司,8899123.

    程序4.20

    package ;

    public class Customer{ // 属性声明

    private String custName;

    private String email;

    private String phone;

    // 构造方法的定义

    public Customer(){}

    public Customer(String custName, String email, String phone){

    me = custName;

    = email;

    = phone;

    }

    // getter方法

    public String getCustName(){ return me; }

    public String getEmail(){ return ; }

    public String getPhone(){ return ; }

    // setter方法

    public void setCustName(String custName){ me = custName; }

    public void setEmail(String email){ = email; }

    public void setPhone(String phone){ = phone; }

    }

    程序4.21

    <%@ page contentType="text/html; charset=UTF-8" %>

    输入客户信息

    输入客户信息

    客户名:
    邮件地址:
    电话:

    程序4.22

    package ;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/CustomerServlet")

    public class CustomerServlet extends HttpServlet {

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ption,ServletException {

    String name = ameter("custName");

    String email = ameter("email");

    String phone = ameter("phone");

    Customer customer = new Customer(name,email,phone);

    HttpSession session = sion();

    synchronized(session) { ribute("customer", customer);

    }

    RequestDispatcher rd =

    uestDispatcher("/");

    d(request,response);

    }

    }

    程序4.23

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    显示客户信息

    客户信息如下

    客户名:
    Email地址:
    电话:

    程序5.1

    Expression Language Example

    JSP Expression Language Example

    ExpressionValue
    ${2+5} ${2+5}
    ${4/5}${4/5}
    ${5 div 6}${5 div 6}
    ${5 mod 7}${5 mod 7}
    ${2<3}${2 < 3}
    ${2gt3}${2 gt 3}
    ${3.1 le 3.2}${3.1 le 3.2}
    ${(5>3)?5:3}${(5>3)?5:3}
    ${empty null}${empty null}
    ${empty param}${empty param}

    程序5.2

    package ; import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/VariableServlet")

    public class VariableServlet extends HttpServlet {

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    ribute("attrib1", new Integer(100));

    HttpSession session = sion();

    ribute("attrib2", "Java World!");

    ServletContext application = getServletContext();

    ribute("attrib3",new ());

    ribute("attrib4", "请求作用域");

    ribute("attrib4", "会话作用域");

    ribute("attrib4", "应用作用域");

    // 请求转发到JSP页面

    RequestDispatcher rd =

    uestDispatcher("/");

    d(request, response);

    }

    }

    程序5.3

    <%@ page contentType="text/html;charset=UTF-8" %>

    访问作用域变量

    访问作用域变量

    程序5.4

    package ;

    public class Address implements izable {

    private String city;

    private String street;

    private String zipCode;

    public Address() { }

    public Address(String city,String street,String zipCode) {

    =city;

    =street;

    e=zipCode;

    }

    // 这里省略了属性的getter方法和setter方法

    }

    程序5.5 package ;

    public class Employee implements izable{

    private String empName;

    private String email;

    private String phone;

    private Address address;

    public Employee(){}

    public Employee(String empName,String email,

    String phone,Address address ){

    e=empName;

    =email;

    =phone;

    s=address;

    }

    public void setEmpName(String empName){ e = empName; }

    public void setEmail(String email) { = email; }

    public void setPhone(String phone) { = phone; }

    public void setAddress(Address address){ s=address;}

    public String getEmpName(){ return e; }

    public String getEmail() { return ; }

    public String getPhone() { return ; }

    public Address getAddress(){ return address; }

    }

    程序5.6

    package ;

    import .*;

    import t.*;

    import .*;

    import s;

    import ee;

    import vlet;

    @WebServlet("/EmployeeServlet")

    public class EmployeeServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    Address address = new Address("上海市",

    "科技路25号","201600");

    Employee employee = new Employee("automan",

    "**************","8899123",address); ribute("employee", employee);

    RequestDispatcher rd =

    uestDispatcher("/");

    d(request, response);

    }

    }

    程序5.7

    <%@ page contentType="text/html;charset = UTF-8" %>

    访问JavaBeans的属性

    使用EL访问JavaBeans的属性

    程序5.8

    package ;

    import .*;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/CollectServlet")

    public class CollectServlet extends HttpServlet{

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    tentType("text/html;charset=UTF-8");

    ArrayList country = new ArrayList();

    ("China");

    ("England");

    ("Russia");

    HashMap capital = new HashMap();

    ("China","北京");

    ("England","伦敦");

    ("Russia","莫斯科");

    ribute("country",country);

    ribute("capital",capital);

    RequestDispatcher rd =

    uestDispatcher("/");

    d(request,response);

    }

    }

    程序5.9

    <%@ page contentType="text/html;charset=UTF-8" %>

    Collections Test

    Accessing Collections

    程序5.10

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ page import=".*" %>

    EL隐含变量的使用

    <%

    Address address = new Address("上海",

    "科技路25号","201600");

    Employee employee = new Employee("automan",

    "**************","8899123",address); ribute("employee", employee);

    Cookie cookie = new Cookie("userName","Hacker");

    kie(cookie);

    %>

    EL隐含变量的使用

    EL表达式
    ${} ${}
    ${me}${me}
    ${}${}
    ${} ${}
    ${}${}
    ${} ${}

    程序6.1

    package ;

    import .*;

    import .*;

    import .*;

    public class HelloTag implements SimpleTag{

    JspContext jspContext = null;

    JspTag parent = null;

    public void setJspContext(JspContext jspContext){

    text = jspContext;

    }

    public void setParent(JspTag parent){

    = parent;

    }

    public void setJspBody(JspFragment jspBody){

    }

    public JspTag getParent(){

    return parent;

    }

    public void doTag() throws JspException, IOException{

    JspWriter out = ();

    ("Hello, A simple tag.

    ");

    ("现在时间是:"+ new ()); }

    }

    程序6.2

    xmlns:xsi="/2001/XMLSchema-instance"

    xsi:schemaLocation="/xml/ns/j2ee

    /xml/ns/j2ee/web-jsptaglibrary_2_"

    version="2.1">

    1.0

    TagExample

    /sample

    hello

    ag

    empty

    程序6.3

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib prefix="demo" uri="/sample" %>

    Using Custom Tag

    Hello Tag Example

    程序6.4

    package ;

    import .*;

    import .*;

    import .*;

    public class RedStarTag extends SimpleTagSupport {

    public void doTag() throws JspException, IOException{

    JspWriter out = getJspContext().getOut();

    ("*");

    }

    }

    程序6.5

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib uri="/sample" prefix="demo" %>

    User Register

    请输入客户信息,带的域必须填写。

    客户名
    Email地址
    电话

    程序6.6

    package ;

    import .*;

    import .*;

    import .*;

    public class WelcomeTag extends SimpleTagSupport {

    private String user;

    public void setUser(String user) {

    = user;

    }

    public void doTag() throws JspException, IOException {

    JspWriter out = getJspContext().getOut();

    try{

    if (user==null){

    ("Welcome, Guest!

    ");

    }else{

    ("Welcome, "+user+"!

    ");

    }

    } catch(Exception e){

    throw new JspException("Error in ()");}

    }

    }

    程序6.7

    <%@ taglib prefix="demo" uri="/sample" %>

    Welcome Tag

    程序6.8

    package ;

    import .*;

    import .*;

    import .*;

    public class BodyTagDemo extends SimpleTagSupport{

    public void doTag() throws JspException, IOException{

    JspWriter out = getJspContext().getOut();

    ("输出标签体前


    ");

    // 获得标签体内容并发送到JSP显示 getJspBody().invoke(null);

    ("
    输出标签体后

    ");

    }

    }

    程序6.9

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ taglib prefix="demo" uri="/sample" %>

    Tag With Body

    Tag with body

    这是标签体内容.

    程序6.10

    package ;

    import .*;

    import .*;

    import .*;

    public class MarkerTag extends SimpleTagSupport {

    private String search = null; // search属性

    public void setSearch(String search){

    = search;

    }

    public void doTag() throws JspException, IOException{

    JspWriter out = getJspContext().getOut();

    StringWriter sw = new StringWriter();

    getJspBody().invoke(sw);

    String text = ng();

    int len = ();

    int oldIndex=0, newIndex=0;

    while((newIndex = f(search,oldIndex))>=0){

    if (newIndex

    break;

    }

    (ing(oldIndex,newIndex));

    (""+search+"");

    oldIndex = newIndex + len;

    }

    (ing(oldIndex));

    }

    }

    程序6.11

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib prefix="demo" uri="/sample" %>

    Tag With Body

    she sells sea shells on the sea shore!

    程序6.12

    package ;

    import .*;

    import .*;

    import .*;

    public class LoopTag extends SimpleTagSupport{

    private int count = 0;

    public void setCount(int count){

    = count;

    }

    public void doTag() throws JspException,IOException{

    JspWriter out = getJspContext().getOut();

    StringWriter sw = new StringWriter();

    getJspBody().invoke(sw);

    String text = ng();

    for(int i = 1;i<=count;i++){

    (""+text+"");

    }

    }

    }

    程序6.13

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib prefix="demo" uri="/sample" %>

    Loop Tag Example

    这是标签体内容!

    程序6.14

    package ;

    // 这里省略了若干导入语句

    @WebServlet("/ProductServlet")

    public class ProductServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    Connection dbconn = null;

    public void init() {

    String driver = "";

    String dburl = "jdbc:postgresql://127.0.0.1:5432/postgres";

    String username = "postgres";

    String password = "postgres";

    try{

    e(driver); // 加载驱动程序

    // 创建连接对象

    dbconn = nection(

    dburl,username,password);

    }catch(ClassNotFoundException e1){

    }catch(SQLException e2){}

    }

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    ArrayList prodList = null;

    prodList = new ArrayList();

    try{

    String sql="SELECT * FROM products WHERE prod_id < 'P4'";

    PreparedStatement pstmt = eStatement(sql);

    ResultSet result = eQuery();

    while(()){

    Product product = new Product();

    d_id(ing("prod_id"));

    me(ing("pname"));

    ce(ble("price"));

    ck(("stock"));

    (product);

    }

    if(!y()){

    sion().setAttribute("prodList",prodList);

    direct("/helloweb/");

    }else{

    direct("/helloweb/");

    }

    }catch(SQLException e){

    tackTrace();

    }

    }

    }

    程序6.15

    package ;

    import .*;

    import .*;

    import .*;

    import .*;

    import t;

    public class ProductTag extends SimpleTagSupport{

    private ArrayList productList;

    public void setProductList(ArrayList productList){

    tList = productList;

    }

    public void doTag() throws JspException, IOException{

    for(Product product:productList){

    getJspContext().setAttribute("product", product);

    getJspBody().invoke(null);

    }

    }

    }

    程序6.16

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib prefix="demo" uri="/sample" %>

    商品信息

    商品号商品名价格库存量
    ${_id} ${} ${} ${}

    程序6.17

    package ;

    import .*;

    import .*;

    import .*;

    public class MathTag extends SimpleTagSupport

    implements DynamicAttributes{

    double num = 0;

    String output = "";

    public void setNum(double num){

    = num;

    }

    public void setDynamicAttribute(String uri, String localName,

    Object value ) throws JspException{

    double val = ouble((String)value);

    if (localName == "min"){

    output = output + " "+num+"与"+val+"的最小值" +

    "" + (num, val) + "";

    } else if (localName == "max"){

    output = output + " "+num+"与"+val+"的最大值" +

    "" + (num, val) + "";

    } else if (localName == "pow"){

    output = output + ""+num+" 的 "+val+

    " 次方"+""+(num, val)+"";

    }

    }

    public void doTag() throws JspException, IOException{

    getJspContext().getOut().print(output);

    }

    }

    程序6.18

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib prefix="demo" uri="/sample" %>

    动态属性

    动态属性的使用

    程序6.19

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib prefix="demo" uri="/sample" %>

    Hello!

    Good Bye!!

    I am Dumb

    程序6.20

    package ;

    import .*;

    import .*;

    import .*;

    public class SwitchTag extends SimpleTagSupport{

    private String conditionValue;

    private boolean caseFound = false;

    public void setConditionValue(String value) {

    ionValue =value;

    }

    public String getConditionValue() {

    return conditionValue;

    }

    public void setCaseFound(boolean caseFound){

    und = caseFound;

    }

    public boolean getCaseFound(){

    return caseFound;

    }

    public void doTag() throws JspException,IOException{

    if (("")){

    getJspContext().getOut().print

    ("You did not provide 'action' parameter.");

    }else{

    getJspBody().invoke(null);

    }

    }

    }

    程序6.21

    package ;

    import .*;

    import .*;

    import .*; public class CaseTag extends SimpleTagSupport{

    private String caseValue;

    public void setCaseValue(String caseValue){

    lue = caseValue;

    }

    public void doTag() throws JspException,IOException{

    SwitchTag parent =(SwitchTag) getParent(); // 返回父标签引用

    String conditionValue = ditionValue();

    if ((caseValue)){

    eFound(true);

    getJspBody().invoke(null);

    }else{

    return; // 不执行标签体

    }

    }

    }

    程序6.22

    package ;

    import .*;

    import .*;

    import .*;

    public class DefaultTag extends SimpleTagSupport {

    public void doTag() throws JspException,IOException{

    SwitchTag parent =(SwitchTag) getParent();

    if(eFound()){

    return;

    }else{

    getJspBody().invoke(null);

    }

    }

    }

    程序6.23

    <%@ page contentType="text/html; charset=UTF-8" %>

    <%@ taglib prefix="c" uri="/jsp/jstl/core" %>

    Set Tag Example

    OLYMPUS数码相机

    程序6.24

    <%@ taglib uri="/jsp/jstl/core" prefix="c" %>

    ${y}*${x}=${x*y}

    程序6.25 foreach_

    <%@ taglib uri="/jsp/jstl/core" prefix="c" %>

    Example of forEach

    Example of forEach
    value of x t
    ${x} ${} ${t} ${} ${} ${}

    程序6.26

    package ;

    import ption;

    import tDispatcher;

    import tException;

    import vlet;

    import rvlet;

    import rvletRequest;

    import rvletResponse;

    import ;

    import ist;

    import ;

    @WebServlet("/BooksServlet")

    public class BooksServlet extends HttpServlet {

    @Override

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    List books = new ArrayList();

    Book book1 = new Book("978-7-302-23059-5","Java语言程序设计",45.00);

    Book book2 = new Book("978-7-302-21540-0","Java Web编程技术",39.00);

    Book book3 = new Book("978-7-302-24130-0","C #入门经典",99.80);

    (book1);

    (book2);

    (book3);

    ribute("books", books); RequestDispatcher rd = uestDispatcher("/");

    d(request, response);

    }

    }

    程序6.27

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ page import=".*," %>

    <%@ taglib uri="/jsp/jstl/core" prefix="c" %>

    图书列表

    varStatus="status">

    <%--为奇数行和偶数行设置不同的背景颜色--%>

    <%--用EL访问作用域变量的成员--%>

    书号书名价格
    ${} ${} ${}

    程序6.28

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ taglib uri="/jsp/jstl/core" prefix="c" %>

    value="白日依山尽,黄河入海流,欲穷千里目,更上一层楼" />

    登鹳雀楼 王之涣

    ${line}

    程序6.29

    <%@ taglib uri="/jsp/jstl/core" prefix="c" %> <%@ page contentType="text/html;charset=UTF-8" %>

    Welcome Page

    You are welcome to my home page!

    程序6.30

    <%@ page contentType="text/html; charset=UTF-8"%>


    关于我们|联系我们|人才招聘|友情链接

    Copyright © 2012 派派电子商城有限责任公司,8899123.

    E-mail Address:${}

    程序7.1

    package ;

    import izable;

    public class Product implements Serializable {

    private String prod_id;

    private String pname;

    private double price;

    private int stock;

    public Product() { }

    public Product(String prod_id, String pname,

    double price, int stock) {

    _id = prod_id;

    = pname;

    = price;

    = stock;

    }

    public String getProd_id() {

    return prod_id;

    }

    public void setProd_id(String prod_id) {

    _id = prod_id;

    }

    public String getPname() {

    return pname;

    }

    public void setPname(String pname) {

    = pname;

    }

    public double getPrice() {

    return price;

    }

    public void setPrice(double price) {

    = price;

    }

    public int getStock() {

    return stock;

    } public void setStock(int stock) {

    = stock;

    }

    }

    程序7.2

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    商品查询

    请输入商品号:

    查询所有商品

    程序7.3

    package ;

    import .*;

    import .*;

    import .*;

    import t.*;

    import .*;

    import vlet;

    @WebServlet("/")

    public class QueryProductServlet extends HttpServlet{

    private static final long serialVersionUID = 1L;

    Connection dbconn = null;

    public void init() {

    String driver = "";

    String dburl = "jdbc:postgresql://127.0.0.1:5432/postgres";

    String username = "postgres";

    String password = "postgres";

    try{

    e(driver); // 加载驱动程序

    // 创建连接对象

    dbconn = nection(

    dburl,username,password);

    }catch(ClassNotFoundException e1){

    n(e1);

    }catch(SQLException e2){}

    }

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    String productid = ameter("productid");

    try{

    String sql="SELECT * FROM products WHERE prod_id = ?";

    PreparedStatement pstmt = eStatement(sql);

    ing(1,productid);

    ResultSet rst = eQuery(); if(()){

    Product product = new Product();

    d_id(ing("prod_id"));

    me(ing("pname"));

    ce(ble("price"));

    ck(("stock"));

    sion().setAttribute("product", product);

    direct("/helloweb/");

    }else{

    direct("/helloweb/");

    }

    }catch(SQLException e){

    tackTrace();

    }

    }

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    ArrayList productList = null;

    productList = new ArrayList();

    try{

    String sql="SELECT * FROM products";

    PreparedStatement pstmt = eStatement(sql);

    ResultSet result = eQuery();

    while(()){

    Product product = new Product();

    d_id(ing("prod_id"));

    me(ing("pname"));

    ce(ble("price"));

    ck(("stock"));

    (product);

    }

    if(!y()){

    sion().setAttribute("productList",productList);

    direct("/helloweb/");

    }else{

    direct("/helloweb/");

    }

    }catch(SQLException e){

    tackTrace();

    }

    }

    public void destroy(){

    try {

    ();

    }catch(Exception e){

    tackTrace();

    }

    }

    }

    程序7.4

    <%@ page contentType="text/html; charset=utf-8" %>

    scope="session">

    商品信息

    商品号:
    商品名:
    价格:
    库存量:

    程序7.5

    <%@ page contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ page import=".*,t" %>

    显示所有商品

    <% ArrayList productList =

    (ArrayList)ribute("productList");

    for(Product product:productList){

    %>

    <%

    }

    %>

    商品号商品名价格数量
    <%=d_id() %> <%=me() %> <%=ce() %> <%=ck() %>

    程序7.6

    <%@ page contentType="text/html; charset=UTF-8" %>

    该商品不存在。返回

    程序7.7

    name="jdbc/sampleDS"

    type="urce"

    maxActive="4"

    maxIdle="2"

    username="paipaistore" maxWait="5000"

    driverClassName=""

    password="paipaistore"

    url="jdbc:postgresql://localhost:5432/paipaistore"/>

    程序7.8

    package ;

    import .*;

    import .*;

    import urce;

    import t.*;

    import vlet;

    import .*;

    import t;

    import .*;

    import .*;

    @WebServlet("/")

    public class ProductQueryServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    DataSource dataSource;

    public void init() {

    try {

    Context context = new InitialContext();

    dataSource =

    (DataSource)("java:comp/env/jdbc/sampleDS");

    }catch(NamingException ne){

    n("Exception:"+ne);

    }

    }

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    Connection dbconn = nection();

    // 代码同程序7.3的doPost()

    }

    public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

    Connection dbconn = nection();

    // 代码同程序7.3的doGet()

    }

    }

    程序7.9

    global = "jdbc/paipaistore"

    name = "jdbc/sampleDS"

    type = "urce"/>

    WEB-INF/

    程序7.10 package ;

    import izable;

    public class Customer implements Serializable{

    private String cust_id;

    private String cname;

    private String email;

    private double balance;

    public String getCust_id() {

    return cust_id;

    }

    public void setCust_id(String cust_id) {

    _id = cust_id;

    }

    public String getCname() {

    return cname;

    }

    public void setCname(String cname) {

    = cname;

    }

    public String getEmail() {

    return email;

    }

    public void setEmail(String email) {

    = email;

    }

    public double getBalance() {

    return balance;

    }

    public void setBalance(double balance) {

    e = balance;

    }

    }

    程序7.11

    package ;

    import .*;

    import urce;

    import .*;

    public class BaseDao {

    DataSource dataSource;

    // 在构造方法中返回数据源对象

    public BaseDao () {

    try {

    Context context = new InitialContext();

    dataSource =

    (DataSource)("java:comp/env/jdbc/sampleDS");

    }catch(NamingException ne){

    n("Exception:"+ne);

    }

    }

    // 返回一个连接对象

    public Connection getConnection()throws Exception{

    return nection();

    }

    } 程序7.12

    package ;

    import .*;

    import ist;

    import er;

    public class CustomerDao extends BaseDao{

    // 插入一条客户记录

    public boolean addCustomer(Customer customer){

    String sql = "INSERT INTO customers" +

    "(cust_id,cname,email,balance)VALUES(?,?,?,?)";

    try(

    Connection conn = nection();

    PreparedStatement pstmt = eStatement(sql))

    {

    ing(1,t_id());

    ing(2,me());

    ing(3,il());

    ble(4,ance());

    eUpdate();

    return true;

    }catch(SQLException se){

    tackTrace();

    return false;

    }

    }

    // 按姓名检索客户记录

    public Customer findByName(String cname){

    String sql = "SELECT cust_id,cname,email,balance" +

    " FROM customers WHERE cname=?";

    Customer customer = new Customer();

    try(

    Connection conn = nection();

    PreparedStatement pstmt = eStatement(sql)){

    ing(1,cname);

    try(ResultSet rst = eQuery()){

    if(()){

    t_id(ing("cust_id"));

    me(ing("cname"));

    il(ing("email"));

    ance(ble("balance"));

    }

    }

    }catch(SQLException se){

    return null;

    }

    return customer;

    }

    // 查询所有客户信息

    public ArrayList findAllCustomer(){

    Customer customer = new Customer();

    ArrayList custList = new ArrayList();

    String sql = "SELECT * FROM customers";

    try(

    Connection conn = nection();

    PreparedStatement pstmt = eStatement(sql);

    ResultSet rst = eQuery()){ while(()){

    t_id(ing("cust_id"));

    me(ing("cname"));

    il(ing("email"));

    ance(ble("balance"));

    (customer);

    }

    return custList;

    }catch(SQLException e){

    tackTrace();

    return null;

    }

    }

    }

    程序7.13

    <%@ page contentType="text/html; charset=UTF-8" %>

    Input a Customer

    ${result}

    请输入一条客户记录

    客户号:
    客户名:
    Email:
    余额:

    程序7.14

    package ;

    import .*;

    import t.*;

    import .*;

    import er;

    import erDao;

    import vlet;

    @WebServlet("/")

    public class AddCustomerServlet extends HttpServlet{

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException,IOException{

    CustomerDao dao = new CustomerDao();

    Customer customer = new Customer();

    String message = null;

    try{

    t_id(ameter("cust_id"));

    // 将传递来的字符串重新使用utf-8编码,以免产生乱码

    me(new String(ameter("cname")

    .getBytes("iso-8859-1"),"UTF-8")); il(new String(ameter("email")

    .getBytes("iso-8859-1"),"UTF-8"));

    ance(

    ouble(ameter("balance")));

    boolean success = tomer(customer);

    if(success){

    message = "

  • 成功插入一条记录!
  • ";

    }else{

    message = "

  • 插入记录错误!
  • ";

    }

    }catch(Exception e){

    message = "

  • 插入记录错误!
  • ";

    }

    ribute("result", message);

    RequestDispatcher rd =

    getServletContext().getRequestDispatcher("/");

    d (request,response);

    }

    }

    程序8.1

    package er;

    import .*;

    import ;

    import t.*;

    import .*;

    import tener;

    @WebListener // 使用注解注册监听器

    public class MyContextListener implements ServletContextListener,

    ServletContextAttributeListener{

    private ServletContext context = null;

    public void contextInitialized(ServletContextEvent sce){

    Context ctx = null;

    DataSource dataSource = null;

    context = vletContext();

    try{

    if(ctx == null){

    ctx = new InitialContext();

    }

    dataSource = (DataSource)("java:comp/env/jdbc/sampleDS");

    }catch(NamingException ne){

    ("Exception:"+ne);

    }

    ribute("dataSource",dataSource); // 添加属性

    ("应用程序已启动:"+new Date());

    }

    public void contextDestroyed(ServletContextEvent sce){

    context = vletContext();

    Attribute("dataSource");

    ("应用程序已关闭:"+new Date());

    }

    public void attributeAdded(ServletContextAttributeEvent sce){

    context = vletContext();

    ("添加一个属性:"+e()+":"+ue());

    }

    public void attributeRemoved(ServletContextAttributeEvent sce){ context = vletContext();

    ("删除一个属性:"+e()+":"+ue());

    }

    public void attributeReplaced(ServletContextAttributeEvent sce){

    context = vletContext();

    ("替换一个属性:"+e()+":"+ue());

    }

    }

    程序8.2

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ page import=".*,.*" %>

    <%

    DataSource dataSource =

    (DataSource)ribute("dataSource");

    Connection conn = nection();

    Statement stmt = Statement();

    ResultSet rst = eQuery(

    "SELECT * FROM products WHERE prod_id>'P2'");

    %>

    Listener Demo

    商品表中信息

    <% while (()){ %>

    <% } %>

    商品号商品名价格库存
    <%= ing(1) %> <%= ing(2) %> <%= ble(3) %> <%= (4) %>

    程序8.3

    package er;

    import rvletRequest;

    import tRequestEvent;

    import tRequestListener;

    import tener;

    @WebListener

    public class MyRequestListener

    implements ServletRequestListener{

    private int count = 0;

    public void requestInitialized(ServletRequestEvent re){

    HttpServletRequest request=

    (HttpServletRequest)vletRequest();

    if(uestURI().endsWith("")){

    count++;

    vletContext().setAttribute("count",new Integer(count));

    }

    }

    public void requestDestroyed(ServletRequestEvent re){

    } }

    程序8.4

    <%@ page contentType="text/html;charset=UTF-8" %>

    请求监听器示例

    欢迎您,您的IP地址是${Addr}

    自应用程序启动以来,该页面被访问了

    ${}

    程序8.5

    package er;

    import t.*;

    import .*;

    import ist;

    import tener;

    @WebListener

    public class MySessionListener implements HttpSessionListener{

    private ServletContext context = null;

    public void sessionCreated(HttpSessionEvent se){

    HttpSession session = sion();

    context = vletContext();

    ArrayList sessionList = (ArrayList)

    ribute("sessionList");

    if(sessionList==null){

    sessionList = new ArrayList();

    ribute("sessionList",sessionList);

    }else{

    (session);

    }

    ("创建一个会话:"+());

    }

    public void sessionDestroyed(HttpSessionEvent se){

    HttpSession session = sion();

    context = vletContext();

    ArrayList sessionList = (ArrayList)

    ribute("sessionList");

    (session);

    ("销毁一个会话:"+());

    }

    }

    程序8.6

    <%@ page contentType="text/html;charset=UTF-8" %>

    <%@ page import=".* " %>

    <%@ taglib prefix="c" uri="/jsp/jstl/core" %>

    会话监听器示例

    与本文相关的文章

    发布评论

    评论列表 (0)

    1. 暂无评论