Servlet学习第三天 — 依次解决:Tomcat 404、初始化组件[Connector[HTTP/1.1-8080]]失败、javax.servlet不存在

来源

  • RUNOOB.COM
  • 各位大佬的博客

Mac下 Hello Servlet 步骤

JavaJDK

Tomcat

  • 放置位置:/Library
  • 打开顺序:cd /Library/Tomcat/bin/
  • 使用 ./startup.sh 开启
  • 如果 Permission denied 那么 sudo chmod 755 *.sh
  • 此时浏览器http://localhost:8080/ 会有那只经典的猫

IDEA 新建 Web 项目

参考网址:https://www.jianshu.com/p/065bd58b4819。步骤就参照这个吧,我列一下自己遇到的错误同时把个人认为他说的不清楚的地方列一下:

  • 写好 XML 文件文件后,直接RUN,没必要和他说的一样,运行 Tomcat。这句话说的不清楚。但是人家之前的所有可都是很规范、详细的。RUN后在浏览器对应地址即可看到 jsp 页面;
  • 遇到的问题:就是在 RUN 之前就启动了 Tomcat。我在浏览器怎么输地址都是404。不过后来我注意到了IDEA中的报错:初始化组件[Connector[HTTP/1.1-8080]]失败。我觉得是以前碰到过的端口占用的问题。所以就关了 Tomcat 直接RUN这个项目。这次即可正确打开网页。上午就做到这里。下午和Servlet 正式 Say Hello。

IDEA HelloServlet

Demo如下:

/**
 *
 * 作者: NoNameMing
 * 参考:https://www.runoob.com/servlet/servlet-first-example.html
 * 参考:https://www.jianshu.com/p/065bd58b4819
 */
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.ImagingOpException;
import java.io.*;

public class HelloServlet extends HttpServlet{
    private String message;

    /**
     *
     * 初始化
     * @throws ServletException
     */
    @Override
    public void init() throws ServletException {
        message = "Hello Servlet, This Message Is From Ming";
    }

    /**
     *
     * doGet方法 响应请求
     * @param request
     * @param response
     * @throws ServletException
     * @throws ImagingOpException
     */
    @Override
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
            throws ServletException, IOException
    {
        // 设置响应内容类型
        response.setContentType("text/html");

        //设置逻辑实现
        PrintWriter out = response.getWriter();
        out.println("

" + message + "

"); } /** * * 到期销毁 */ @Override public void destroy() { super.destroy(); } }

如果出现解析不了 HttpServlet 这个包的情况。打开/Library/lib 复制 servlet-api.jar 到 设定好的 lib 中。

编译之后,.class文件会在设置好路径的 classes 中。

  • IDEA 编译单个、没有 Main 的 .java 文件的快捷键: shift + cmd + F9 (不行的话按住 fn)

  • IDEA Build、Make、Run的区别:https://www.cnblogs.com/ini_always/archive/2011/10/23/2221985.html

  • 我只展示一下,感谢二位作者。

    1、Compile:只编译选定的目标,不管之前是否已经编译过;

    2、Make:编译选定的目标,但是Make只编译上次编译变化过的文件,减少重复劳动,节省时间。(具体怎么检查未变化,这个就不用考虑了,IDE自己内部会搞定这些的);

    3、Build:是对整个工程进行彻底的重新编译,而不管是否已经编译过。Build过程往往会生成发布包,这个具体要看对IDE的配置 了,Build在实际中应用很少,因为开发时候基本上不用,发布生产时候一般都用ANT等工具来发布。Build因为要全部编译,还要执行打包等额外工 作,因此时间较长。

部署方式:在 web.xml 中写入如下代码:

<servlet>
        <servlet-name>HelloServletservlet-name>
        <servlet-class>HelloServletservlet-class>
    servlet>
    <servlet-mapping>
        <servlet-name>HelloServletservlet-name>
        <url-pattern>/HelloServleturl-pattern>
    servlet-mapping>
  • 嵌入到 web-app中

到这里RUN就可以了,在浏览器输入响应地址则可以看到消息。我自己设定的地址是http://localhost:8080/t/HelloServlet

总结

遇到问题,看报错、思考、google/bing/baidu三连。不要慌。加油,noobs,一起努力!

你可能感兴趣的:(Java)