[size=large]实例[/size]
终于开始编码了,现在我们将会编写helloBean.java和helloServlet.java文件,很显然,两个文件是分别通过javabean和servlet的方式在页面上显示“hello,你好!”的。先让我们来看看使用javabean的实现方法吧。
其实javabean就是一个普通的java类文件,不过需要满足一些特性,比如说:javabean文件里需要一个本类的无参构造函数,属性的get/set方法等。关于javabean的更详细的资料可以参考其他书籍。其实可以把javabean理解为一个提供方法的类,然后在jsp里创建该类的对象,通过这个对象来调用相应的方法而已。Javabean就这么简单。为了让大家容易理解,下面是一个简单的javabean文件。
在上面的程序中,helloBean有一个属性str,并有与该属性配对的getStr和setStr方面。既然之前说是要在jsp里显示str的内容,那么应该有一个jsp页面来调用它吧,下面我们就来看这个jsp页面是如何实现的:
上面的代码很短,但已经足够实现我们所需要的操作了,关键语句在<body>标签里,正如我们之前所说,先创建一个名为helloBean的对象,说明它的使用范围和类文件所在地址;接下来则是调用getStr方法获得str的值并显示;最后修改str的值后,再次读取该值并显示在屏幕上。
不过怎样来测试现有的代码呢?这个问题很简单,我们使用的web服务器是tomcat,我们在tomcat在进入webapps目录,为了不和其他项目混淆,我们先为这个项目建立一个文件夹,我取名字为jsp-test;然后在jsp-test里建立WEB-INF文件夹,这个文件夹里存放着这个项目的类文件(classes)、库文件(lib)和配置文件(web.xml)等。因为当客户请求该项目时tomcat服务器会自动根据配置文件在WEB-INF文件下寻找相应的文件,并做出响应。好了,我们现在就试试helloBean,我们得先把helloBean.java编译成helloBean.class文件,如刚才所说,我们把编译好的helloBean.class文件存放到WEB-INF目录下,起目录结构为:D:\apache-tomcat-5.5.15\webapps\jsp-test\WEB-INF\classes\hello。因为helloBean.java在hello下,所以helloBean.class也在hello包下,符合相应的包结构。然后再把helloBean.jsp文件保存到jsp-test目录下即可。还不快点启动tomcat,看看我们的成果,访问地址就是之前我们的测试地址加上项目名和文件名,即http://localhost:8080/jsp-test/helloBean.jsp。呵呵,看见效果了吧,下面我们将学习一个简单的servlet。
其实servlet跟javabean一样,也是一个java类文件,并满足一些特殊要求,如:需要继承Servlet或HtppServlet类等。我们主要是是servlet的GET和POST方法来响应页面请求。一个简单的servlet代码如下:
可能你也注意到了,helloServlet除了继承了HttpServlet类外,不管是POST还是GET方法时,都是在doPost方法中实现的,这些为了程序的简单易读。当然了,你也可以根据不同的要求来修改代码。还值得注意的是,输出语句里的信息其实就是一个基本的html代码,这也是响应给客户端的信息。同样的,要运行该servlet也需要一个jsp来实现:
这个jsp代码很简单,就是当表单里的按钮按下时,通过post方法响应action。还记得先前我说过的配置文件吗?因为调用servlet前需要在配置文件里说明servlet类存放的地址和映射地址,所以我们编写一个web.xml文件如下:该文件应存放在WEB-INF目录下。
终于开始编码了,现在我们将会编写helloBean.java和helloServlet.java文件,很显然,两个文件是分别通过javabean和servlet的方式在页面上显示“hello,你好!”的。先让我们来看看使用javabean的实现方法吧。
其实javabean就是一个普通的java类文件,不过需要满足一些特性,比如说:javabean文件里需要一个本类的无参构造函数,属性的get/set方法等。关于javabean的更详细的资料可以参考其他书籍。其实可以把javabean理解为一个提供方法的类,然后在jsp里创建该类的对象,通过这个对象来调用相应的方法而已。Javabean就这么简单。为了让大家容易理解,下面是一个简单的javabean文件。
//helloBean.java
package hello;
public class helloBean {
private String str = "hello,你好!";
public helloBean() {}
public String getStr() {
return str;
}
public void setStr(String _str) {
str = _str;
}
}
在上面的程序中,helloBean有一个属性str,并有与该属性配对的getStr和setStr方面。既然之前说是要在jsp里显示str的内容,那么应该有一个jsp页面来调用它吧,下面我们就来看这个jsp页面是如何实现的:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>helloBean Test</title>
</head>
<body>
<jsp:useBean id="helloBean" scope="session" class="hello.helloBean" />
<%= helloBean.getStr() %>
<br>
<% helloBean.setStr("Hello,world!"); %>
<% out.print(helloBean.getStr()); %>
</body>
</html>
上面的代码很短,但已经足够实现我们所需要的操作了,关键语句在<body>标签里,正如我们之前所说,先创建一个名为helloBean的对象,说明它的使用范围和类文件所在地址;接下来则是调用getStr方法获得str的值并显示;最后修改str的值后,再次读取该值并显示在屏幕上。
不过怎样来测试现有的代码呢?这个问题很简单,我们使用的web服务器是tomcat,我们在tomcat在进入webapps目录,为了不和其他项目混淆,我们先为这个项目建立一个文件夹,我取名字为jsp-test;然后在jsp-test里建立WEB-INF文件夹,这个文件夹里存放着这个项目的类文件(classes)、库文件(lib)和配置文件(web.xml)等。因为当客户请求该项目时tomcat服务器会自动根据配置文件在WEB-INF文件下寻找相应的文件,并做出响应。好了,我们现在就试试helloBean,我们得先把helloBean.java编译成helloBean.class文件,如刚才所说,我们把编译好的helloBean.class文件存放到WEB-INF目录下,起目录结构为:D:\apache-tomcat-5.5.15\webapps\jsp-test\WEB-INF\classes\hello。因为helloBean.java在hello下,所以helloBean.class也在hello包下,符合相应的包结构。然后再把helloBean.jsp文件保存到jsp-test目录下即可。还不快点启动tomcat,看看我们的成果,访问地址就是之前我们的测试地址加上项目名和文件名,即http://localhost:8080/jsp-test/helloBean.jsp。呵呵,看见效果了吧,下面我们将学习一个简单的servlet。
其实servlet跟javabean一样,也是一个java类文件,并满足一些特殊要求,如:需要继承Servlet或HtppServlet类等。我们主要是是servlet的GET和POST方法来响应页面请求。一个简单的servlet代码如下:
//helloServlet.java
package hello;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class helloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>");
out.println("helloServlet Test");
out.println("</title>");
out.println("</head>");
out.println("<body>");
out.println("hello,你好!");
out.println("</body>");
out.println("</html>");
out.flush();
}
}
可能你也注意到了,helloServlet除了继承了HttpServlet类外,不管是POST还是GET方法时,都是在doPost方法中实现的,这些为了程序的简单易读。当然了,你也可以根据不同的要求来修改代码。还值得注意的是,输出语句里的信息其实就是一个基本的html代码,这也是响应给客户端的信息。同样的,要运行该servlet也需要一个jsp来实现:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>helloServlet Test</title>
</head>
<body>
<form method="post" action="/jsp-test/hello/helloServlet">
<input type="submit" value="测试servlet">
</form>
</body>
</html>
这个jsp代码很简单,就是当表单里的按钮按下时,通过post方法响应action。还记得先前我说过的配置文件吗?因为调用servlet前需要在配置文件里说明servlet类存放的地址和映射地址,所以我们编写一个web.xml文件如下:该文件应存放在WEB-INF目录下。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>hello.helloServlet</servlet-class>
</servlet>