使用IDEA创建JavaWeb项目并部署Tomcat
首先,点击File新建project取名字为HelloWorld
然后,在文件处右键Add Framework Support勾选Web Application
简单修改web下的index.jsp,将""里的内容改为HelloWorld(则浏览器访问该文件时会显示HelloWorld),利用Tomcat进行访问
点击上方有Edit Configuration,点击左方的加号找到Tomcat,点击local,在右方Server中Application server中找到Tomcat的地址,然后点击Deployment,点击右边下方的加号,点击artifact,出现HelloWorlf:war exploded,点击apply,ok
点击run
目录中出现out
Web项目目录机构
WEB-INF(此文件夹下面的文件不能通过浏览器访问,这个文件夹以外的文件是可以通过浏览器进行访问的)
修改web中的index.jsp中的内容
右键web创建一个html文件,修改title和内容,点击运行
在此网址基础上添加hello.html即可访问该文件的html文件
编写第一个servlet
右键src新建一个package(servlet包)暂时取名为net_zixue.servlet
再在该包里新建一个Java Class,暂时取名为HelloServlet
- 继承httpservlet
- 复写doGET(),doPost()方法
-“sout+回车”即为输出的方法
此时已经写好了一个servlet
package net_zixue.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("接收到get请求");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("接收到get请求");
}
}
配置一个web.xml文件(在web/WEB-INF/web.xml)
首先,配置一个servlet标签
servlet-name取名叫helloServlet
servlet-class标签,自动补全前面的类名net_zixue.servlet.HelloServlet
servlet-mapping里面的name要与class的name相同
url是我们访问时访问的名称,里面一定要带“/”
·tomcat根据web里面的class文件来查找servlet
·servlet标签是用来注册一个servlet的
·urlpattern是我们访问的一个路径名
部署并访问:
Edit Configuration—>deployment—>修改application context,后面加一个项目的名(此时为hello),通过ip地址+端口号+项目名来访问web项目,运行部署
在原有地址的基础上加上hi
idea控制台会显示“接收到get请求”,则访问成功
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>net_zixue.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
</web-app>
使用Servlet3.0创建Servlet
查看JavaEE6以上的版本
在项目的包上(net_zixue.servlet)右键new---->servlet
urlPatterns = "/test"注意要有“/”
在doget下打System.out.println(“testServlet收到了请求”);
部署运行
在之前的网页链接最后的“/hi”改为“/test”,idea接受台会显示“testServlet收到了请求”
HttpServletRequest获取请求行和请求头
获取请求行
在HelloServlet中的doGet中添加一些方法,然后部署运行,在原有网址上加hi,idea控制台返回相应信息
请求头
req.getHeaderNames()然后在括号的位置“art+enter”添加一个本地变量
while(headerNames.hasMoreElements())
String element = headerNames.nextElement();取到其中的每一个元素
打印一下element
在访问一下浏览器
就把请求头都打印出来了
package net_zixue.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("接收到get请求");
System.out.println("请求方式:"+req.getMethod());
System.out.println("URL:"+req.getRequestURI());
System.out.println("发出请求客户端IP地址:"+req.getRemoteAddr());
System.out.println("服务点接收请求的IP地址:"+req.getLocalAddr());
System.out.println("访问客户端的端口号:"+req.getRemotePort());
System.out.println("web应用路径:"+req.getContextPath());
System.out.println("http协议和版本:"+req.getProtocol());
Enumeration<String> headerNames = req.getHeaderNames();
while(headerNames.hasMoreElements()){
String element = headerNames.nextElement();
System.out.println(element);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("接收到get请求");
}
}
打印请求头的值
System.out.println(element+":"+req.getHeader(element));
再访问浏览器
idea控制台显示相应信息
package net_zixue.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("接收到get请求");
System.out.println("请求方式:"+req.getMethod());
System.out.println("URL:"+req.getRequestURI());
System.out.println("发出请求客户端IP地址:"+req.getRemoteAddr());
System.out.println("服务点接收请求的IP地址:"+req.getLocalAddr());
System.out.println("访问客户端的端口号:"+req.getRemotePort());
System.out.println("web应用路径:"+req.getContextPath());
System.out.println("http协议和版本:"+req.getProtocol());
Enumeration<String> headerNames = req.getHeaderNames();
while(headerNames.hasMoreElements()){
String element = headerNames.nextElement();
System.out.println(element+":"+req.getHeader(element));
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("接收到get请求");
}
}
获取请求参数
现在out中的HelloWorld_war_exploded文件下新建一个html取名为get
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<h2>发起HTTP get请求</h2>
<form action="hi" method="get">
<p>账号:<input type="text" name="name" /></p>
<p>密码:<input type="text" name="passWord" /></p>
<input type="submit" value="提交" />
</form>
</html>
通过hi访问HelloServlet
请求方式是get
部署运行
访问浏览器,在原有网址下添加get.html
然后在sevlet中获取一下请求参数