旨在解释一些简单到不行但搞不出来会掉头发的问题。(自己给自己增加了8个浏览量!)
Eclipse缺少插件
Help-Install New Software;
Work With下输入:Oxygen - http://download.eclipse.org/releases/oxygen
选择:Web,XML,Java EE and OSGi Enterprise Development 下的如下四项:
下载后重启Eclipse即可。
安装Run environment 时Apache下没有Tomcat选项
仍然是缺少插件,方法同上;此处需要安装的是:JSE Server Adapters, JSE Server Adapters Extension。
服务器环境配置
参考:https://blog.csdn.net/df19900725/article/details/77755654#四服务器环境设置
运行第一个servlet程序
最终的目录结构:
1. 新建Java Web项目
New-Dynamic Web Project
2. 导入jar包
新建lib文件夹,将tomcat/lib/servlet-api.jar拷贝到此处。右键,Bulid Path;完成。
3. 新建servlet
New-Servlet,给定类名,Next;
修改URL Mapping:
4. doGet()方法中,写测试代码
String param = request.getParameter("userName");
String str = "<html><body><h1>" + param;
str = str + " hello world!</h1></body></html>";
response.getWriter().write(str);
5. 运行
在当前servlet上右键,Run As - Run on Server
创建一个Server:
选择对应的Tomcat版本;
选择Tomcat路径,运行。
成功:
一个很诡的问题:
实现html与servlet传递信息:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="servlet/InputMoneyServlet">
<fieldset>
<legend>请输入姓名和金额</legend>
姓名:<input type="text" name="userName" id="userName" /> <br /> 金额:<input
type="number" name="money" id="money" /> <br /> <input
type="submit" value="提交" />
</fieldset>
</form>
</body>
</html>
Servlet:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//接受用户请求
System.out.println("request character encoding:"+req.getCharacterEncoding());
req.setCharacterEncoding("utf-8");
String userName=req.getParameter("userName");
String strMoney=req.getParameter("money");
System.out.println("InputMoneyServlet.doGet() userName:"+userName);
//生成响应文档
resp.setCharacterEncoding("utf-8");
String str="<!DOCTYPE html><html><head><meta charset='utf-8'></head>";
str=str+"<body><h1>姓名:"+userName+"</h1>";
try{
double money=Double.parseDouble(strMoney);
str=str+"<h1>金额:"+money+"</h1></body></html>";
}catch(Exception ex){
str=str+"<h1>金额:异常输入</h1></body></html>";
}
resp.getWriter().write(str);
}
开始是,html文件的action写错了,但之后在修改action为servlet/InputMoney/Servlet,仍旧访问最初写错了的servlet。最终是靠删除html,再新建html,完成。
问题在于,修改后再次运行,程序仍然默认运行前一次运行成功的结果;并没有按照修改后的程序运行。但这是为什么呢?如何解决?