① 前言
什么是Java Servlet?
菜鸟教程: Java Servlet是运行在Web服务器或者应用服务器上的程序,作为来自Web浏览器或者其他HTTP客户端的请求与HTTP服务器上的数据库或者应用程序之间的中间层
为什么会用上这么个玩意呢,原因是我需要创建一个工程,要求 前端为一个完整的网页,并且可以与后端交互,说白了就是在前段网页点击内容,调用后台的功能函数,由于后台功能函数我是使用Java语言,也就是相当于使用Javascript调用Java,在网上查询了相关资料后决定采用这个工具试一下
需要下载一个Apache Tomcat作为Web测试服务器
② 基本用法
启动服务器
startup.bat
关闭服务器
shutdown.bat
③ 环境配置
配置完成后可以通过cmd进入目录的bin路径中运行startup.bat
④(problem)控制台中文乱码问题
进入tomcat下的conf
目录,打开logging-properties
文件,修改
java.util.logging.ConsoleHandler.encoding = UTF-8
为
java.util.logging.ConsoleHandler.encoding = GBK
即可
⑤(problem)javac编译Java类出现不存在Servlet包的问题
解决方法:设置classpath
需要找到你的servlet-api.jar所处的位置,一般是tomcat目录下的lib目录中
然后将该文件创建为classpath(路径顺带着文件名!)
创建完成后再尝试基本可以成功了(我是成功了)
⑤ 首次测试
解决了一系列问题后进行第一次测试
- 编写Java类
- 放到目录中进行
javac
编译成class文件 - 在
web.xml
中配置网页 - 启动服务器,输入特定域名
Java代码(务必说明一下,编写的类必须继承HttpServlet
,否则会有各种莫名其妙的错误)
import javax.servlet.*;
import java.io.IOException;
import javax.servlet.http.*;
import java.io.*;
public class Main extends HttpServlet {
private String message;
public void init() throws ServletException {
message = "I WANT TO TEST";
}
/*public void service(ServletRegistration request,ServletResponse response) throws ServletException, IOException {
}*/
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>"+message+"</h1>");
out.println("<p>"+"cacscavfdfgdrbhrfbfdsv is a gug"+"</p>");
// Servlet 代码
}
public void destory(){
}
}
结果很明显,成功了
⑥ GET方法
默认的从浏览器向Web服务器传递信息的方法,会产生一个很长的字符串,类似下面这种
http://www.test.com/hello?key1=value1&key2=value2
- GET方法有大小限制,请求字符串中最多只能有1024个字符
Servlet中使用方法doGet()
来处理GET请求
⑥ POST方法
POST打包信息的方式与GET差不多,但是POST不把信息作为URL中 ? 字符后的文本字符串进行发送,而是把这些信息作为一个单独的信息,消息以标准输出的形式传到后台程序
Servlet中使用doPost()
来传递POST请求
⑦(problem)javac编译Java类出现“编码GBK的不可映射字符(中文)”
解决方法来源
将编译指令改成
javac -encoding UTF-8 Target.java
⑧(problem)测试网页界面中文显示为问号
都忘了在Node.js中有遇到过这个问题了,其实很简单,在编写的Java类中将下列代码
response.setContentType("text/html");
设置为
response.setContentType("text/html;charset=UTF-8");
即可解决问题
Q.E.D.
Comments | 0 条评论