简介:
Servlet是一个Java编写的程序,是基于Http协议的,在服务端运行的(如Tomcat)是按照Servlet规范编写的一个java类。
作用:
Servlet是服务器端用来解析浏览器发送的http协议的。如下图:
浏览器页面上的信息时通过http协议传输的,服务器端用servlet进行解析,就可以获取到信息。
Demo:
(1) 一个简单的html页面(login.html):
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="http://localhost:8089/test_servlet/loginServlet" >
用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
登录按钮的类型为submit,直接提交from表单,提交的地址是action的内容,默认的提交方式get;
(2)自己编写的LoginServlet.java文件
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
String username=request.getParameter("username");
String password=request.getParameter("password");
System.out.println("username="+ username);
System.out.println("password="+password);
response.setContentType("text/html");
response.getWriter().println("Login Success");
}
}
自己编写的Servlet都继承了HttpServlet,用到了两个接口HttpServletRequest和HttpServletResponse用于接收请求和做出响应。需要引用一个jar包:servlet-api.jar
(3)对LoginServlet.java文件进行编译
前提我们已经配置好jdk的环境,在dos窗口中把路径切换到存放LoginServlet.java的路径,输入javac + 文件名,会生成一个class文件。如图:
生成的class文件:
编译过程中可能会遇到下图中类似的错误:
原因一:用的jar包需要环境变量中的系统变量的classpath中进行配置:
原因二:
java文件中有编写错误,因为是大小写严格区分所以检查自己的代码是否正确。
(4)Tomcat中进行配置
Tomcat的目录结构:
将我们的Demo--test_servlet放到webapps目录下
每个项目中文件目录也是有规范的:会有一个WEB-INF文件夹,其中包含lib文件夹和classes文件夹和web.xml文件;
将我们编译生成的class文件放到classes文件夹中:
(5)编写web.xml文件
作用:按路径映射和Servlet映射做匹配,找到对应的Servlet处理请求。
<?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>MyServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>
在html文件中action有请求路径,找到对应servlet-mapping中的url-pattern,得到servlet-name,再由servlet-name找到对应的servlet-class即LoginServlet。
(6)启动tomcat服务
找到bin文件夹下的startup.bat,运行……
(7)执行
输入用户名和密码后,tomcat可以得到请求:
响应到界面:
因为是get方式我们可以看到用户名和密码显示在路径中,所以我们一般用post提交方式。
总结:
这个小小的Demo却包含了挺多的知识,很多小细节上网查之后才明白为什么那么写,总结过程才不断地问自己为什么,以后多多总结。