使用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应用终于调通辽。。。。

原文地址:https://www.cnblogs.com/zz-1226/p/11229616.html

时间: 2024-11-09 06:18:18

使用IDEA创建一个Servlet应用程序的相关文章

JavaWeb中如何自己创建一个servlet

其实,一个Servlet就是一个java文件,所以创建servlet的过程其实就是创建一个类的过程,接下来我们创建一个Servlet. 比如我们创建一个类名叫作DateServlet的类,使得这个类继承(extends)HttpServlet 重写doGet()和doPost()方法. public class DateServlet1 extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, Http

01_3_创建一个Servlet

01_3_创建一个Servlet 1.创建一个Servlet import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRe

快速创建一个 Servlet 项目(1)

1. 新建一个 maven project (web app) 得到如下项目 2. 添加 servlet 和 jsp 依赖 通常 servlet 和 jsp 依赖由web容器提供,这个编译错误并不会影响运行,但是为了开发方便,可以提供(provided)依赖 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version&

创建一个directshow应用程序一

创建dshow应用程序一般有三个步骤: 1.创建一个Filter Graph Manager组件. IGraphBuilder * pGraph = NULL; HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraph);, 2.根据实际的应用,创建一个filter链,比如播放一个本地文件,最简单快速的代码如下: hr = pGra

VB6 如何创建一个标准控制台程序

打开 VB6 并新建一个标准EXE程序,把窗口删掉,然后再加入一个模块. 在模块中加入AllocConsole.FreeConsole.SetConsoleTitle.Sleep的API声明: Public Declare Function AllocConsole Lib "kernel32.dll" () As LongPublic Declare Function FreeConsole Lib "kernel32.dll" () As LongPublic

Ubuntu下创建一个简单c程序编译并运行

1.首先可以创建一个XXX文件夹命令:mkdir XXX 2.进入创建好的XXX文件夹:cd xxx (ps:返回上一层文件可以:cd /) 3.创建一个c程序文件:touch XXX.c 4.用vim编辑器对其进行编辑:vim XXX.c 5.编辑完可以通过快捷键shift+zz 保存并推出编辑器 6.用gcc编译并输入指定文件名:gcc XXX.C -o xxxxx.out 7.运行xxxx.out的命令是:./xxxxx.out ps:以上XXX和xxxxx均是省略的文件夹或者文件名,具体

创建一个IOS应用程序

一.创建工程 二.Xcode中的IOS工程模板 一.Application: 1.Master-Detail:树形结构导航 2.Page-Base:电子书效果 3.Single-View: 4.Tabbed: 5.Game: 二.FrameWork & Library 三.应用分析 1.AppDelegate -->UIRespounder AppDelegate 应用程序委托对象,作为应用程序生命周期.状态保持.作用 2.ViewController --> UIViewContro

java_第一个servlet小程序

xml中注册: <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>

快速创建一个 Servlet 项目(2)

1. 新建一个 webapp 参考 http://www.cnblogs.com/zno2/p/5909019.html 2.调整jdk版本 修改 pom.xml 文件,将jdk 调整为适当的版本,比如 1.7 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <