搭建Web项目开发环境
然后,我们可以开始使用MyEclipse搭建java Web项目开发环境,只需要跟我一步步操作即可:
1、新建MyEclipse的工作空间
2、选择工作空间的路径
3、建立我们的Web项目
4、输入Web项目的名称,我们使用的是J2EE1.4,Finish之后一定要选择No,如果选择Y的话,MyEclipse就能使用jdk1.5的环境了。
5、此时我们的Web项目基本上就算完成了,下面这幅图,我们大家详细的介绍一下它的目录。
编写一个现实登陆的Servlet,并部署访问
1、我们先写一个简单的HTML,可以在WebRoot新建,也可以复制一个写好的HTML,我们用post提交方式,当然也可以用get提交,大家可以自己尝试一下。
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2. <html xmlns="http://www.w3.org/1999/xhtml">
3. <head>
4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
5. <title>登录</title>
6. </head>
7. <body>
8.
9. <form action="http://localhost:8080/loginServlet/LoginServlet" method="post">
10. <input type="text" name="username" /><br/>
11. <input type="password" name="password" /><br/>
12. <input type="submit" value="登录" />
13.
14. </form>
15. </body>
16. </html>
2、完成Servlet,在Web项目的src中右键新建一个类LoginServlet,输入下面代码即可。
1. //引入所需要的包
2. import java.io.*;
3. import javax.servlet.*;
4. import javax.servlet.http.*;
5.
6. public class LoginServlet extends HttpServlet {
7. //重写doGet方法
8. public void doGet(HttpServletRequest request,
9. HttpServletResponse response)
10. throws ServletException,
11. IOException {
12. "username");
13. "password");
14.
15. //服务器端打印信息
16. //System.out.println("username=" + username);
17. //System.out.println("password=" + password);
18. //设置编码格式
19. "text/html;charset=GB18030");
20.
21. //返回html页面
22. "<html>");
23. "<head>");
24. "<title>登录信息</title>");
25. "</head>");
26. "<body>");
27. "欢迎【" + username + "】用户登录成功!!!");
28. "</body>");
29. "</html>");
30. }
31. //重写doPost方法
32. public void doPost(HttpServletRequest request,
33. HttpServletResponse response)
34. throws ServletException,
35. IOException {
36. doGet(request, response);
37. }
38. }
3、在WebRoot下的WEB-INF的web.xml,部署我们的Servlet,启动服务器。
1. <?xml version="1.0" encoding="UTF-8"?>
2. <web-app version="2.4"
3. xmlns="http://java.sun.com/xml/ns/j2ee"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
6. >
7.
8. <servlet>
9. <servlet-name>MyServlet</servlet-name>
10. <servlet-class>LoginServlet</servlet-class>
11. </servlet>
12.
13. <servlet-mapping>
14. <servlet-name>MyServlet</servlet-name>
15. <url-pattern>/LoginServlet</url-pattern>
16. </servlet-mapping>
17. </web-app>
4、一定要启动服务器,之后在浏览器中输入你的URL,此时我们就可以调用Servlet了,我们看一下运行结果。
实
Servlet部署
客户端通过URL地址访问web服务器中的资源,所以若想访问Servlet必须要把servlet程序映射到一个URL地址上,在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成,如上面的实例。
*<servlet>用于注册Servlet,包含了<servlet-name>和<servlet-class>两个子元素,分别用于设置servlet的名称以及servlet的类名。
*<servlet-mapping>用于映射上面<servlet>中的对外访问路径,同样包含<servlet-name>和<url-pattern>两个元素,分别用于设置servlet的名称以及servlet的对外访问路径。
在servlet映射到URL有两种格式:
1.“*.扩展名”
2.以正斜杠(/)开头并以“/*”结尾。
servlet对url的匹配规则以及路径问题,大家可以上网查,有很多相关的资料,例如:
4、Web服务器调用Servlet过程(Servlet生命周期)
servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。servlet的生命周期分为四步:
实例化以及加载servlet,new的过程。
2)初始化init(ServletConfig)。
3)处理请求,调用servlet的service,doget,dopost方法将Request和Response,作为参数传递。
4)退出服务,调用destory方法释放资源。
注意:
1、servlet只实例化一次。感觉有点单例模式的意思,大家可以研究一下Tomcat的实现原理。
2、init方法也只执行一次。servlet实例只创建一次,所以init初始化只调用一次。
5、Servlet线程安全问题
当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用service方法,因此,service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。大家重点理解下面两句即可:
(1) Servlet是单实例多线程的,如果存在可以修改的成员变量将会出现线程安全问题。
(2) 使用Servlet最好保证Servlet是无状态的,也就是没有可以修改的成员变量。