1、Tomcat的使用
1)首先安装Tomcat,注意端口号不要和系统冲突
2)为了编译servlet文件,编译前要把<Tomcat>\common\lib\servlet-api.jar放入<JAVA_HOME>\jre\lib\ext中
3)建立servlet文件:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body bgcolor=\"white\">");
out.println("<head>");
out.println("<title>Hello!</title>");
out.println("</head>");
out.println("<body>");
out.println("Hello World!");
out.println("</body>");
out.println("</html>");
}
}
4)编译后放入<Tomcat>\webapps\servlets-examples\WEB-INF\classes中
5)编辑<Tomcat>\webapps\servlets-examples\WEB-INF\web.xml文件,添加新的节点,如
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
6)访问可以直接在地址栏键入:http://localhost:8080/servlets-examples/HelloWorld
注意:使用时存在缓存,一定要修改一次,启动一次tomcat,并刷新浏览器
7)也可以自己建立新的根应用目录,目录结构应该和servlets-examples一样,将所有的servlet类放入WEB-INF\classes中。更为合理的设计是有images、jsp、servlets和WEB-INF子目录,其中WEB-INF子目录下有classes、jsp目录和web.xml文件,将所有的servlet类放入classes中。这里的web.xml文件可以书写为:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<display-name>My examples</display-name>
<description>This is the Web application!</description>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
访问可以直接在地址栏键入:http://localhost:8080/webapp/HelloWorld
注意:如果映射为
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
可以发现只要键入webapp根目录,就会打开HelloWorld所对应的servlet
如果映射为
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
可以发现只要键入webapp根目录或者HelloWorld,就会打开HelloWorld所对应的servlet
8)显示汉字需要设置如下:
response.setContentType("text/html;charset=GBK");
注意此行必须在下面一行的前面!
PrintWriter out = response.getWriter();
2、显示时间
代码为:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Date;
public class exec extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Date d=new Date();
out.println(d.toString() );
out.close();
}
}
3、网页表单元素的使用
有网页:
<html>
<head>
<title>Exec</title>
</head>
<body>
<form method="get" action="http://localhost:8088/servlets-examples/exec">
<input type="text" name="T1" size="20"><P>
<input type="submit" value="提交" name="B1">
</form>
</body>
</html>
其中form提交的网页就是action属性指定的网页,此时可以使用servlet来处理提交的数据,如:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
public class exec extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
String value=request.getParameter("T1");
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.print("<html><body>");
out.print(value);
out.print("</body></html>");
out.close();
}
}
4、servlet链接数据库
注意:需要配置系统数据源SQLpubs,相应的数据库里面有一个名称为stu的表,并且至少具有两个字段:number和name
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
public class exec extends HttpServlet
{
private Connection connection;
private String URL="jdbc:odbc:SQLpubs";
private Statement st;
private ResultSet res;
private ResultSetMetaData metaData;
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection=DriverManager.getConnection(URL,"","");
PrintWriter output=response.getWriter();
response.setContentType("text/html");
StringBuffer results=new StringBuffer();
st=connection.createStatement();
res=st.executeQuery("select * from authors");
metaData=res.getMetaData();
int numberOfColumns=metaData.getColumnCount();
results.append("<html><head><title>Database Exec</title></head>");
results.append("<body>");
for(int i=1;i<=numberOfColumns;i++)
{
results.append(metaData.getColumnName(i)+" ");
}
results.append("
");
while(res.next())
{
for(int i=1;i<=numberOfColumns;i++)
{
results.append(res.getObject(i)+" ");
}
results.append("
");
}
results.append("</body></html>");
st.close();
output.println(results.toString());
output.close();
connection.close();
}
catch(Exception e)
{}
}
}
5、结合网页表单处理的数据库网页
网页为:
<html>
<head>
<title>Exec</title>
</head>
<body>
<form method="get" action="http://localhost:8088/servlets-examples/exec">
<input type="text" name="T1" size="20"><P>
<input type="submit" value="提交" name="B1">
</form>
</body>
</html>
servlet为:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
public class exec extends HttpServlet
{
private Connection connection;
private String URL="jdbc:odbc:StuSQL";
private Statement st;
private ResultSet res;
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection=DriverManager.getConnection(URL,"","");
response.setContentType("text/html;charset=GBK");
PrintWriter output=response.getWriter();
StringBuffer results=new StringBuffer();
st=connection.createStatement();
res=st.executeQuery("select name from stu where number='"+request.getParameter("T1")+"'");
output.print("<html><head><title>Database Exec</title></head>");
output.print("<body>");
res.next();
output.print(res.getString(1));
output.print("</body></html>");
st.close();
output.close();
connection.close();
}
catch(Exception e)
{}
}
}
[此贴子已经被作者于2010-12-12 08:05:29编辑过]