使用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;@Overridepublic void init(ServletConfig servletConfig) throws ServletException {this.servletConfig = servletConfig;}@Overridepublic ServletConfig getServletConfig() {return servletConfig;}@Overridepublic 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>");}@Overridepublic String getServletInfo() {return "My Servlet";}@Overridepublic 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
总结
以上是生活随笔为你收集整理的使用IDEA创建一个Servlet应用程序的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 深度学习:卷积神经网络(convolut
- 下一篇: 创建Servlet项目(IDEA版)