- C/C++ 跨平台原理
使用平台相关的编译器, 将C/C++编译成对应平台的可执行文件, 然后在对应的平台上运行 - Java的跨平台原理
Java将代码编译成与平台无关的字节码文件(.class文件), 然后再由对应平台的JVM(Java虚拟机) 加载编译完的字节码文件(.class文件), 解析字节码文件并将它翻译为对应平台的机器指令. (基于上述的跨平台原理, java的源文件可以做到, 一次编译, 到处运行). - HTTP 请求通信的原理
再服务端运行一个程序, 一直监听80端口的的数据的变化, 当监听到80端口有数据过来的时候, 开始处理收到的数据. - IntelliJ中新建Java程序, 运行处理http请求
- 新建一个空的项目 ( New Project -> Empty Project -> 填写路径)
- 添加Java 模块到空的工程中(Project Structure -> Modules -> Add -> New Module ->Java -> Next)
- 添加框架是项目支持web(Add Framework Support -> Web Application)
- 将项目和资源部署到服务器上(此次展示的是本地的服务器上)
- 启动tomcat
- 将tomcat集成到IntelliJ中(Add Configurations -> Server -> tomcat local -> Configure配置tomcat的路径).
- 将当前项目和资源部署到服务器上(Add Configurations -> Deployment ->Artifacet)
- 修改访问的路径(可选, 改前访问路径是: http://localhost:8080/01_HelloWorld_war_exploded/htmls/login.html, 如果将Application context改为hello, 则此时的访问路径变为: http://localhost:8080/hello/htmls/login.html)(Add Configurations -> Deployment ->Artifacet -> Application context)
- 通过debug启动tomcat和项目.
- 通过html 提交表单到服务器, (html中的form标签中的 aciton="/hello/login" method=“post”, 此时表单提交时候, 发送的为post请求, 地址为 http://localhost:8080/hello/login).
- 处理接收到的请求
- 添加Servlet 库(Project Structure -> Modules -> Dependencies -> Libraries -> Application Server Libraries ->Tomcat)
- 新建类处理请求
- 新建类(New Class, 命名为 com.mj.servlet.LoginServlet)
- LoginServlet 继承自 HttpServlet.(public class LoginServlet extends : HttpServlet)
- 使用@WebServlet, 说明处理的请求路径(@WebServlet("/login")(此时处理的请求路径为http://localhost:8080/hello/login);
- 对post和get的不同的处理, 如下
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("do get..." + username + password);
if ("123".equals(username) && "456".equals(password)){
resp.getWriter().write("login success...");
return;
}
resp.getWriter().write("login failure...");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("do post..." + username + password);
if ("123".equals(username) && "456".equals(password)){
resp.getWriter().write("login success...");
return;
}
resp.getWriter().write("login failure...");
}