zoukankan      html  css  js  c++  java
  • 使用IDEA创建一个Servlet应用程序

    使用IDEA创建一个Servlet应用程序

    第一步:创建web应用

    选择web application应用,之后填写项目名称等。

    第二步:项目配置

    在WEB-INF目录下创建两个文件夹:classes和lib,其中classes是Servlet类和其他JAVA类必须存放的位置,类以下的目录反映了类包的结构。lib是Servlet应用程序所需JAR文件要在这里部署。但是Servlet API的JAR文件不需要在这里部署,容器中已经有了它的备份。

    2.1 修改class文件的输出目录

    选择菜单File ---> Project Structure.. --->选择modules ---->path选项 将class文件的输出改为之前创建的classes目录

    2.2 修改jar文件的存储

    还是在modules菜单下,选择Dependencies 选项卡 ---> 点击右侧的 “+”号,选择“JARs or directories…”,选择创建的lib目录

    目录改为我们在WEB-INF下创建的lib目录,选择如下:

    第三步:编写Servlet程序

    在src目录下,创建一个servlet文件,其内容如下:

    package app01a;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet(name = "MyServlet",urlPatterns = {"/my"})
    
    public class MyServlet implements Servlet{
        private transient ServletConfig servletConfig;
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            this.servletConfig = servletConfig;
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return servletConfig;
        }
    
        @Override
        public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
            String servletName = servletConfig.getServletName();
            //网页响应类型,浏览器将其渲染为HTML格式
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.println("<html><head></head>" + "<body> Hello from " + servletName + "</body></html>");
        }
    
        @Override
        public String getServletInfo() {
            return "My Servlet";
        }
    
        @Override
        public void destroy() {
    
        }
    }
    

    第四步:配置Tomcat

    选择Edit Configurations..

    这里要注意JRE的路径,不要选择默认,要选择安装JRE的路径,我在运行的时候出现了1099端口被占用的情况,但是用netstat -ano|findstr 1099并没有找到任务PID,百度后说是JRE的版本路径要严格一致。

    同时,Deployment标签下修改访问的URL路径。

    参考:IDEA的Tomcat配置Web的项目创建以及Servlet简单运行

    第五步:运行程序

    访问localhost:8080/应用名称/servlet名

    遇到的问题

    启动TomCat时,日志出现乱码

    百度了各种博客,修改了一大堆还是继续乱码,偶然间因为1099端口占用,去tomcat/bin目录下启动tomcat时,发现win10的命令行下也是乱码情况,参考的博客,完美解决了问题:

    解决最新版tomcat在window10下启动可能出现启动日志乱码的情况

    关于web.xml的错误

    在第四步配置Tomcat后,我们访问这个ServletTest的路径变成了http://localhost:8080/my,这样访问的路径是WEB-INF下的index.jsp文件,在web.xml中配置了servlet-mapping后,才能访问对应的servlet对象

     <servlet>
            <servlet-name>MyServlet</servlet-name>
            <servlet-class>app01a.MyServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>MyServlet</servlet-name>
            <url-pattern>/test</url-pattern>
        </servlet-mapping>
    

    访问http://localhost:8080/my/test可以访问对应的servlet对象,调用service方法,浏览器应该渲染出service方法中的HTML内容。但是访问时出现了错误 错误代码500

    中午睡了一觉起来,没问题了。。。。。先记录一下别的错误,如果下次再遇到,再记录叭(」><)」

    Servlet使用注解

    使用注解WebServlet时,刚开始只是取代了web.xml中的标签,运行程序后404页面,参考博客:Servlet使用注解配置URl提示404错误

    在web.xml的标签中使用属性metadate-complete="false"之后即可运行成功。

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete ="true">
    

    原因:

    Servlet 3.0 的部署描述文件 web.xml 的顶层标签 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。如果设置为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过 web-fragment.xml 的扫描,亦即禁用可插性支持;如果不配置该属性,或者将其设置为 false,则表示启用注解支持(和可插性支持)。

    至此,一个简单:(的Servlet应用终于调通辽。。。。

  • 相关阅读:
    leetcode 122. Best Time to Buy and Sell Stock II
    leetcode 121. Best Time to Buy and Sell Stock
    python 集合(set)和字典(dictionary)的用法解析
    leetcode 53. Maximum Subarray
    leetcode 202. Happy Number
    leetcode 136.Single Number
    leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap
    [leetcode]1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree
    正则表达式
    十种排序算法
  • 原文地址:https://www.cnblogs.com/zz-1226/p/11229616.html
Copyright © 2011-2022 走看看