Servlet笔记——(1.3.1)第一个手动Servlet程序

静态资源

(1) 在webapps目录下创建一个项目目录(命名必须不包含中文和空格),比如“hello”;

(2) 在项目目录下新建一个html文件,比如“index.html”。

(3) 访问:http://localhost:8080/hello/index.html

动态资源(JSP Servlet)

(1)在webapps目录下创建一个项目目录;

(2)在项目目录下创建如下内容:

|--- WEB-INF

|---在WEB-INF目录下创建web.xml文件

|--- 创建静态或动态页面

注意:WEB-INF目录不能被客户端直接访问

 

1.3.1第一个Servlet程序(手动)

(1) UML时序图描述登陆流程


(2) 开发目录结构

(3) 新建登陆页面login.html


<form action="http://localhost:8080/login/servlet/LoginServlet" method="get">
	username: <input type="text" name="username" /><br>
	<input type="submit" value="login" />
</form>

(4) 新建LoginServlet.java 

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String username = request.getParameter("username");
		
		if ("admin".equals(username)) {
			response.getWriter().println("username right!");
		} else {
			response.getWriter().println("username error!");
		}
	}

}

(5) 编译LoginServlet.java

   (5.1) 启动CMD窗口;

   (5.2) javac encodingutf-8 LoginServlet.java;

   (5.3) 会提示“找不到文件”的错误,原因:没有配置classpath,(导入相关的jar包):

classpath=D:\apache-tomcat-7.0.54\lib\servlet-api.jar;D:\jdk1.7\jre\lib\rt.jar;

   (5.4) 修改LoginServlet.java源文件,import需要的类;

   (5.5) 将建立好的LoginServlet程序编译后,拷贝到web application中的classes目录中;

注意:如果源文件“FirstServlet.java”使用的是“UTF-8”编码,且源文件中包含中文,在CMD环境中编译时需指定编码:

javac  -encoding "UTF-8"  LoginServlet.java


(6) 安装/启动Tomcat服务器

TOMCAT_HOME\bin\startup.bat,在随后打开的“cmd”窗口中若未发现有异常,且显示“Server startup in XXXX ms”,则表示tomcat服务启动成功。(注意启动Tomcat前必须配置“JAVA_HOME”环境变量)。

注:也可以单独为Tomcat配置JAVA_HOME变量,操作如下:打开startup.bat页面,最上面增加代码,如下图所示:

rem ---------------------------------------------------------------------------

rem Guess CATALINA_HOME if not defined
set JAVA_HOME=”D:\JDK1.7”
set "CURRENT_DIR=%cd%"


(7) 定义部署目录结构


注意:

不能将servlet-api.jar放到WEB-INF/lib下,因为服务器Tomcat已经存在,如果还加到WEB-INF/lib下,将会造成冲突,导致Web应用程序不能正常加载!

    (7.1) 在“webapps”下新建项目文件夹(应用程序的根目录,我们把一个Web应用程序中的所有东西放到这个目录下),文件夹命名为“login”;

    (7.2) 在“login”文件夹下创建目录“WEB-INF”;

    (7.3) 在“WEB-INF”下创建目录,命名为“classes”和“lib”;

    (7.4) 把HTML文件(“login.html”)拷贝到项目根目录(login)下面;

    (7.5) 把编译好的Servlet字节码文件(LoginServlet.class)拷贝到“WEB-INF/classes”文件夹下;


(8) 定义配置文件web.xml

从tomcat安装路径“webapps\examples\WEB-INF”查找Tomcat自带示例程序中的“web.xml”,将其拷贝到我们自己“web project的WEB-INF”下面,用文本编辑器打开,删除无关代码后如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
</web-app>

将我们自定义编译好的LoginSevlet配置到web.xml文件中:(在web.xml中配置Servlet的目的其实只有一个,就是把访问路径与一个Servlet绑定到一起,下面的配置是把访问路径“/HelloServlet”和“com.zhb.web.servlet.HelloServlet”绑定到一起。<servlet>和<servlet-mapping>通过<servlet-name>这个元素关联在一起。)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   <servlet>
       <servlet-name>LoginServlet</servlet-name>
      <servlet-class>com.zhb.web.LoginServlet</servlet-class>
   </servlet>

  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/servlet/LoginServlet</url-pattern>
  </servlet-mapping>
  
</web-app>


注:
   url-pattern:提供给客户端访问的名称,必须以“/”开头(服务器端“/”代表http://localhost:8080/webappName  (含项目名称));
  
在浏览器地址栏输入:
      http://localhost:8080/2014-12-23_LoginServlet/a,就能访问到该Servlet
      =====>>>>><url-pattern> =======>>>>>><servlet-name> ABC   ======>>>>><servlet>标签下的<servlet-name>
      =====>>>>><servlet-class>=======>>>>>> 反射机制创建LoginServlet实例

(9) 浏览器访问

浏览器地址栏输入http://localhost:8080/2014-12-23_LoginServlet/a,在tomcat窗口观察servlet输出结果:


(10) 定义表单的action属性

将login.html其拷贝到web application目录下,打开login.html,设置action:

<html>
	<head>
		<title>登陆</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>

	<body>
		<!--action:可以使用绝对路径:http://locaohost:8080/login_servlet/loginServlet				-也可以使用相对路径(相对于当前login.html文件的位置):相对路径最前面不要加“/”,即不能写成:action="/loginServlet"
		-->
		<form action="loginServlet" method="post">
			用户名:<input type="text" name="username" /><br/>
			密码:<input type="password" name="password" /><br/>
			<input type="submit" value="登陆">	
		</form>
	</body>
</html>

(11) 客户端(浏览器)发送请求访问服务器

打开浏览器,地址栏输入http://localhost:8080/login_servlet/login.html打开登录页面:

在用户名和密码框中输入信息:


单击“登录”按钮,浏览器页面显示:



同时观察服务器端窗口:

(13) UML分析LoginServlet调用流程




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值