Servlet入门知识大全
严重警告:知道Servlet的人不要往下看
把别人告诉我的告诉你:
Servlet是服务器端的java程序
通过http协议被客户端调用,在客户端形成动态网页
需要什么:
一个文件:servlet.jar
什么,你问这个jar文件是么东西?用你的WinRar打开可以看看,没什么了不起,只是铺天盖地的.class。不要管太多。总之这些.class给你提供了很多方法。
怎么,你没有找到这个servlet.jar?我再也不想告诉你怎么办了,你自己看着办吧。
写一程序看看先:
在你的tomcat的webapps下建立一个工程myThree吧,还记得吗,在myThree下还需要什么?!同时在你的myThree先再建立一个文件夹,给它取个名,就叫javaSource可以吧
myThree
WEB-INF
javaSource
classes
lib
Web.xml
赶快把servlet.jar放在myThree--- WEB-INF---lib里面吧
在Eclipe中新建你的工程吧,也取名叫myThree好了,方便辨认,把你的源文件(.java)放在myThree--- javaSource里,把你的类文件(.class)放在myThree--- WEB-INF--- classes
里面吧。(如果不知道怎么弄,回去看火星和冥王星吧)
在Eclipe中,对着myThree右键----Properties—左边寻Java Build Path”右边寻Libraries”-----“Add External JARs”进入,把刚刚放在lib下的servlet.jar选中吧。。。
好了,写一个类先,就取名字叫:Test
程序代码如下:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Test extends HttpServlet
{
public void doGet( HttpServletRequest rq,
HttpServletResponse rp )
throws IOException,ServletException
{
rp.setContentType("text/html;charset=gb2312");
PrintWriter out=rp.getWriter();
out.println("<html>欢迎你使用Servlet</html>");
}
}
把你的这个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/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>123</servlet-name>
<servlet-class>Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>123</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
</web-app>
请再次启动你的tomcat
在你的ie地址栏输入:
http://localhost:8080/myThree/abc
看到效果了吗?
怎么,觉得太没意思了,来个稍微复杂点的如何?
把刚刚上面的程序该为:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Test extends HttpServlet
{
public void doGet( HttpServletRequest rq,
HttpServletResponse rp )
throws IOException,ServletException
{
rp.setContentType("text/html;charset=gb2312");
PrintWriter out=rp.getWriter();
out.println("<html>");
out.println("<form method=post action=abc>");
out.println("<input type=text name=t1><br>");
out.println("<input type=submit value=确定><br>");
out.println("</form>");
out.println("</html>");
}
public void doPost( HttpServletRequest rq,
HttpServletResponse rp )
throws IOException,ServletException
{
rp.setContentType("text/html;charset=gb2312");
PrintWriter out=rp.getWriter();
String t = rq.getParameter("t1");
out.println("<html>欢迎你:");
out.println(t);
out.println("</html>");
}
}
请再次启动你的tomcat
在你的ie地址栏输入:
http://localhost:8080/myThree/abc
在框框中输入你的名字,再按“确定”看看。。
只想说明2点:
看
out.println("<input type=text name=t1><br>");和
String t = rq.getParameter("t1");
下面的rq.getParameter("t1")会在上面找到一个name叫t1的东东,并且获得它的内容赋值给t。
再看web.xml
<servlet>
<servlet-name>123</servlet-name>
<servlet-class>Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>123</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
这里<servlet-class>Test</servlet-class>中的Test跟你工程中的类的名字一样
这里<url-pattern>/abc</url-pattern>中的abc跟你在ie地址栏上应用myThree后面输入的相同
这里<servlet-name>123</servlet-name>,上面、下面的一样。
这些,你都发现了吗?
现在你知道怎么把/abc 改为/cba、把123该为321了吗?
再给一个例子:
建立工程giveYou(不要忘了WEB-INF和她的孩子们)
在giveYou下写三个文件
1:login.jsp内容如下
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<form method="post" action="http://localhost:8080/giveYou/Test2">
<center>
<table width=32% border=0>
<tr>
<td align=right width=12% >username:</td>
<td>
<input type=text name=username size=20 >
</td>
</tr>
<tr>
<td align=right width=12%>password:</td>
<td>
<input type=password name=password size=20 >
</td>
</tr>
<tr>
<td width=12%>
<input type=submit name=submit value=submit>
</td>
<td>
<input type=reset name=reset value=reset >
<td>
</tr>
</table>
</center>
</form>
</HTML>
2:success.jsp内容如下
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>error</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<h1><font color=green>Success!!</font></h1>
<form mothod="post" action="login.jsp">
<input type="submit" name="submit" value="返回">
</form>
</body>
</html>
3:error.jsp内容如下
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>error</title>
</head>
<body>
<h1><font color=red>Error!!你没有输入用户名、密码</font></h1>
<form mothod="post" action="login.jsp">
<input type="submit" name="submit" value="返回">
</form>
</body>
</html>
在Eclipe中新建你的工程吧,也取名叫giveYou(把你的源文件(.java)放在myThree--- javaSource里,把你的类文件(.class)放在myThree--- WEB-INF--- classes里面),不要忘了导入servlet.jar
写一个类Test,内容如下:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Test extends HttpServlet
{
private String userId,passWord;
public void doPost( HttpServletRequest rq,
HttpServletResponse rp )
throws IOException,ServletException
{
rp.setContentType("text/html;charset=gb2312");
PrintWriter out=rp.getWriter();
userId=rq.getParameter("username");
passWord=rq.getParameter("password");
if((userId!=null)&&(passWord!=null))
{
rp.sendRedirect("/giveYou/success.jsp");
}
else
{
rp.sendRedirect("/giveYou/error.jsp");
}
}
}
由于web.xml与myThree中的一样,在此就不说了
请再次启动你的tomcat
在你的ie地址栏输入:
http://localhost:8080/giveYou /login.jsp
本章后语:到了这里的时候,你一定已经很不耐烦了,认为我的“毫无废话”成了“废话连篇”,但是,我的哥哥姐姐,到了上面的这个例子,你认为你是不可以把它写的稍微复杂,稍微漂亮一些了呢,不要让页面老是那么苍白、不要让文字总是那么的黑不咙咚、做几十个类,互相调用看看、在doPost()中写个条件语句,根据获得的不同值跳转到不同的页面试试,相信你的程序再不会那么孤独了。
一点早该跟你说的话:你应该注意到了,每个应用都放在tomcat的webapps下面,每个应用都必须有WEB-INF结构(你不要跟我说你没注意到这一点,那我将为你看了这么多的废话感到悲哀)。为什么呢?因为服务器tomcat启动的时候,她靠什么来判断哪些应用该她“管辖”呢。她就在自己的webapps文件夹下面,找到所有的文件夹,并且看这些文件夹是不都有WEB-INF文件夹,如果有,她就会去看看WEB-INF下面有没有web.xml这个文件。如果webapps下的任何一个文件夹没有WEB-INF结构,她会认为这个东西与她无关。tomcat自动的读取web.xml中的内容,当你运行你的程序需要相关的内容的时候,她就看看你写的web.xml是否提供了相关的配置。---但愿我说清楚了!!! :)
本文地址:http://www.45fan.com/dnjc/68393.html