使用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应用终于调通辽。。。。
使用IDEA创建一个Servlet应用程序的更多相关文章
- 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】
Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...
- 01_3_创建一个Servlet
01_3_创建一个Servlet 1.创建一个Servlet import java.io.IOException; import java.io.PrintWriter; import javax. ...
- 第一个servlet小程序
第一个servlet小程序 com.fry.servlet.HelloServlet package com.fry.servlet; import javax.servlet.ServletExce ...
- 使用 Android Studio 开发工具创建一个 Android 应用程序,显示一行文字“Hello Android”,并将应用程序的名称更改为“FirstApp”。
需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,显示一行文字"Hello Android",并将应用程序的名称更改为"Firs ...
- 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行
需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行 实现步骤: 打开 Android Studio,创建一个 Andr ...
- 玩转Web之servlet(一)---怎样创建一个servlet
Servlet概念:servlet就是用java编写的服务器端的小程序,用来完成下B/S架构(即浏览器和服务器架构)下客户端请求的响应处理. servlet通常在容器中运行Tomcat是常见的serv ...
- 创建一个servlet
servlet: 它是web应用程序的核心类,可以直接处理和相应用户请求,又或者将处理工作委托给应用中的其他部分的类. 让servlet继承HttpServlet的原因是: 1.HttpServlet ...
- 快速创建一个 Servlet 项目(1)
1. 新建一个 maven project (web app) 得到如下项目 2. 添加 servlet 和 jsp 依赖 通常 servlet 和 jsp 依赖由web容器提供,这个编译错误并不会影 ...
- VB6 如何创建一个标准控制台程序
打开 VB6 并新建一个标准EXE程序,把窗口删掉,然后再加入一个模块. 在模块中加入AllocConsole.FreeConsole.SetConsoleTitle.Sleep的API声明: Pub ...
随机推荐
- kafka源码导入idea/eclipse
先进入源码工程:执行gradle idea或者gradle eclipse 之后再导入idea/eclipse
- thread stack size not set; configure via D:\Program Files\elasticsearch-5.0.0\config\jvm.options or ES_JAVA_OPTS
抄自:http://blog.csdn.net/leo063/article/details/52994786 thread stack size not set; configure via D:\ ...
- 如何在git中上传图片
首先在git仓库上创建一个文件夹,之后点击 Upload files 上传本地的图片 上传完之后复制存放图片的git网址 之后在新建一个.md的子文件 新建完成之后在该md文件中写入如下代码: ![任 ...
- 快捷键-Visual Studio Code快捷键
Shift+Enter 在Python终端中运行选定内容/行 C
- 我是如何一步步编码完成万仓网ERP系统的(七)产品库设计 3.品牌图片跨域上传
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- Python - 注释 - 第四天
注释 确保对模块, 函数, 方法和行内注释使用正确的风格 Python中的注释有单行注释和多行注释: Python中单行注释以 # 开头,例如: # 这是一个注释 print('Hello Pytho ...
- LearnOpenGL笔记(2)三角形
这是学习LearnOpenGL CN教程的笔记,包括我遇到的问题和我的烂笔头.文章名与网站小节对应. ------------------------------------分割线---------- ...
- maven 学习---Maven中央存储库
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载. 首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源, 如果没有找到,然后把它会 ...
- MySQL数据物理备份之tar打包备份
复制数据文件方式,可以使用cp或tar 1.停止服务 [root@localhost mysql]# systemctl stop mysqld [root@localhost mysql]# net ...
- sql server 如何在全库中查找数据在哪个表
1.查找字段在库中哪个表 如果要查找FName select a.name,b.name from syscolumns a inner join sysobjects b ...