接着上一个博客,有几个小问题需要解决一下
1.没有Tomcat自带的lib
解决方法
应用,ok,问题解决
2. 出现乱码的现象
在idea中Tomcat启动出现乱码问题 照着做就完事
3.无法访问localhost:8080
idea中tomcat启动但是访问不了localhost:8080页面在csdn真是太幸福了,前人种树后人乘凉
Tomcat 和网页的简单交互
学习视频:https://www.bilibili.com/video/BV1BJ411L7NR?p=2
1.现在src目录底下建立文件夹,并在里面建立一个java class类
2.在test里插入implements Servlet
package fun.btcs.MyServlet;
import javax.servlet.Servlet;
public class test implements Servlet {
}
插入后IDEA会提示有问题,点小灯泡然后选第一个
接下来代码变成了这样
package fun.btcs.MyServlet;
import javax.servlet.*;
import java.io.IOException;
public class test implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
init——创建
service——运行
destroy——删除
接下来在service里写一条文本(我是服务端,我已经接受到了客户端的请求)
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("我是服务端,我已经接收到了客户端的请求");
但是做完这一步并不能看到这一条文本。首先要搞清楚
这里的东西相当于本地的文件,还没有被打包的,最终客户端看到的所有的数据都是经过打包后的,在out文件夹底下(下面test用MyServlet代替)
在tomcat_war_exploded底下的文件是不能被客户端所访问到的,所以我们需要做一个映射,在web文件夹底下的web.xml里面写
<?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>MyServlet</servlet-name>
<servlet-class>fun.btcs.MyServlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
</web-app>
看着很绕,其实不然
看做4条代码互相关联
- 写需要映射的文件名称
- 写需要映射的文件地址
- 抄1
- 写在客户端访问时的地址
只要遵守1和3 一样,24就会关联
下面我们访问http://localhost:8080/MyServlet
虽然网页上空白,但是我们服务端收到了请求
还是在server里添加
servletResponse.getWriter().write("hello world");
再次访问
好了,这下就完成了一次基本的交互,客户端发送请求,服务端接受数据。网页大多都是这样子的交互java web真简单
客户端发送数据,客户端接收是怎么玩的呢
还是在server里面写
String id = servletRequest.getParameter("id");
System.out.println("我是servlet,我已经接收到了客户端发送的请求" + id);
servletResponse.getWriter().write("hello world");
好了,在网页端,网址后打上?id=1
服务端也收到了客户端发送的1。交互完成