Servlet和Tomcat环境搭建
1.B/S模式执行流程
在浏览器中输入百度的网址,浏览器就会根据输入的网址去找对应的IP地址,这个过程是又DNS来完成。当浏览器确定了地址,就会将用户输入的信息通过HTTP协议发送到百度的服务器主机中。服务器会根据发送过来的信息进行程序(我们自己编写)处理,生成动态的HTML文件,再发送给浏览器,浏览器解析HMTL文件,最后呈现给用户。
2.请求和响应
- 从浏览器发送给服务器的数据包称为:"请求(Request)"
- 从服务器返回给浏览器的结果称为:"响应(Respose)"
3.Tomcat下载与安装
下载地址:https://tomcat.apache.org/download-80.cgi
下载对应的操作系统位数。找到bin目录下——startup.bat文件,双击启动Tomcat服务器。出现命令提示符窗口,最底下出现"start Servlet startup in 1157ms"说明Tomcat服务器已经启动。
然后可以通过在浏览器的地址上输入"http://localhost:8080/"来验证是否配置成功。关闭Tomcat就是把命令提示符窗口关闭即可
4.Eclipse创建JavaWeb项目
1.点击Servlet栏下方的高亮字体
2.选择Apache下的8.5版本Tomcat
3.第一行是服务器的名称,随便取。第二行是Tomcat的安装位置。第三行是选择JRE。最后Finish
4.创建JavaWeb项目,在左侧空白处右键
5.项目配置
一直next,直到这个页面,打勾。生成XML文件,
创建好后的工程目录
6.抒写Java文件
Sourse——Override/Implement Methods...—倒数第二个打勾,生成方法。
FirstServlet.java
package javaClass;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
//因为该Java类是需要发布到服务器上,所以要继承HttpServlet类
@Override
protected void service(HttpServletRequest request, HttpServletResponse respose)
throws ServletException, IOException {
//接收请求发送的参数
String name = request.getParameter("name");
//将前端发送过来的数据传入到html字符串中
String html = "<h1 style='color:lightblue'>hi!"+name+"</h1>";
//在控制台输出
System.out.println("返回给浏览器的数据:"+html);
//把字符串返回给浏览器 服务器向浏览器返回的输出流
PrintWriter out = respose.getWriter();
//通过out对象把html发送会浏览器
out.println(html );
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>FirstServletDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- Tomcat是不认识刚才写的FirstServlet.java文件,需要在Web.xml中进行配置 -->
<!-- 该标签意思:定义了一个叫first的Servlet,实现类是javaClass包下的FirstSevlet.java -->
<servlet>
<!-- servlet的别名,自定义 -->
<servlet-name>first</servlet-name>
<!-- 包名 + 类名 -->
<servlet-class>javaClass.FirstServlet</servlet-class>
</servlet>
<!-- 现在所有的JavaWeb程序都是通过网址来访问,这里的目的就是把上面的servlet和网址绑定 -->
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
右击Servlet栏中的服务器,选择Add and Remove,将刚才的工程添加进服务器中。然后点击调试,开启服务器。
打开浏览器输入该地址
http://localhost:8080/FirstServletDemo/hello?name=JavaWeb
5.JavaWeb标准工程结构
6.Servlet开发步骤
- 创建Servlet类,并继承HttpServlet
- 重写service方法,编写程序代码
- 配置web.xml,绑定URL
SimpleServlet.java
package javaClass;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SimpleServlet extends HttpServlet{
/*
* HttpServletRequest request:浏览器发送过来的请求
* HttpServletResponse response:服务器发送给浏览器的响应
*/
public void service(HttpServletRequest request,HttpServletResponse response) throws IOException {
//getWriter()向浏览器输出的数据流
PrintWriter out = response.getWriter();
out.println("<a href='www.baidu.com'>baidu</a>");
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>FirstServletDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>simple</servlet-name>
<servlet-class>javaClass.SimpleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>simple</servlet-name>
<url-pattern>/sp</url-pattern>
</servlet-mapping>
</web-app>
Servlet访问方法
- http://IP地址端口/context-path/url-mapping
- context-path:工程名
- url-mapping:映射地址
7.请求参数发送与接收
请求参数就是浏览器把数据发送给服务器的过程称为请求参数。以网页的中填写的表单为例。
student.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生登记表</title>
</head>
<body>
<h1>学员信息登记表</h1>
<form>
姓名:<input name="name"/><br/>
电话:<input name="mobil"/><br/>
性别:<selct name="sex" style="width:100px;padding:5px">
<option value="male">男</option>
<option value="female">女</option>
</selct><br/>
特长:
<input type="checkbox" name="spec" value="English">英语
<input type="checkbox" name="spec" value="Program">编程
<input type="checkbox" name="spec" value="Speech">演讲
<input type="checkbox" name="spec" value="Swimming">游泳
<br/>
<input type="submit" value="提交">
<br/>
</form>
</body>
</html>
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>FirstServletDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>stu</servlet-name>
<servlet-class>javaClass.StudentSystem</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>stu</servlet-name>
<url-pattern>/stud</url-pattern>
</servlet-mapping>
</web-app>
StudentSystem.java
package javaClass;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class StudentSystem extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)
throws IOException {
String name = request.getParameter("name");
String mobile = request.getParameter("mobile");
String sex = request.getParameter("sex");
String[] spec = request.getParameterValues("spec"); //复选框获取信息写法
PrintWriter out = response.getWriter();
out.println("<h1>name:"+name+"</h1>");
out.println("<h1>name:"+mobile+"</h1>");
out.println("<h1>name:"+sex+"</h1>");
for(int i = 0; i<spec.length; i++) {
out.println("<h1>name:"+spec[i]+"</h1>");
}
}
}