手动创建javaweb
Easul Lv6

项目结构

最开始要手动创建的目录与文件

折叠代码块 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
projectName    项目名称
├── ml
│ └── lightly
│ └── demo 包源码目录结构
│ └── Test.java 测试的java文件
├── WEB-INF
│ ├── classes 放java文件的包和类
│ ├── lib 放java类的依赖包
│ └── web.xml 进行javaweb的一些配置
├── index.html 主页面
├── css css文件
└── js 放js文件

index.html

折叠代码块HTML 复制代码
1
2
3
4
<form action="/projectName/test" method="get">
<input name="hello" value="world">
<input type="submit" value="submit it">
</form>

下载所需jar包

mvnrepository下载fastjson,放到lib目录,一会需要。

web.xml常用配置

折叠代码块XML 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>dsj</display-name><!--设置xml的title-->

<!--导入一个servlet类-->
<servlet>
<servlet-name>HandleServer</servlet-name>
<servlet-class>ml.lightly.demo.Test</servlet-class>
</servlet>

<!--给这个servlet类加一个虚拟访问路径-->
<servlet-mapping>
<servlet-name>HandleServer</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>

<!--默认访问首页类型,优先级从上向下越来越低-->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>

Test.java

我这里使用的是vscode,安装了Java Extension Pack,需要导入依赖jar包,可以参考这里。不导入会报错。
需要导入lib/fastjson-1.2.47.jartomcat目录/lib/servlet-api.jar
如果用普通记事本编写,则不需要导入。
这里是一个简单的servlet模板

折叠代码块JAVA 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package ml.lightly.demo;

/*
创建了一个简单的servlet,引入的依赖有
implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.47'
compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
*/
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;

import com.alibaba.fastjson.JSONObject;

public class Test extends HttpServlet{
public void init() {}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
JSONObject json = new JSONObject();
PrintWriter writer = response.getWriter();
try {
json.put("key", "value");
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.print(json);
writer.flush();
writer.close();
}
response.getWriter().print(json);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
doGet(request, response);
}
}

java命令行编译

折叠代码块BASH 复制代码
1
2
3
4
5
# cp后边指定依赖jar包的路径,windows的路径使用\隔开,linux的路径使用/隔开
# 如果有多个jar包,windows用;隔开,linux用:隔开
# -encoding 指定编码的字符集
# -d 指定输出的目录
javac -cp projectName路径/WEB-INF/lib/fastjson-1.2.47.jar:tomcat目录/lib/servlet-api.jar -encoding utf-8 -d projectName路径/WEB-INF/classes/ Test.java

运行

projectName整个文件夹复制到tomcat/webapps
projectName下的ml/lightly/demo这整个文件夹就没用了,里边放的是源码,不运行源码,所以可以不复制
tomcat/bin下运行如下命令

折叠代码块BASH 复制代码
1
./catalina.sh run

然后在界面访问localhost:8080/你的projectName/test,点击submit,就可以返回我们servlet返回的json了

 评论
来发评论吧~
Powered By Valine
v1.5.2