Maven 配置存在一些问题
- warning:No archetype found in remote catalog. Defaulting to internal catalo
使用Maven创建项目时 设置属性 archetypeCatalog = internal
或者
在Maven的VM Options加上 -DatchetypeCatalog = internal
- Maven 默认web项目中的web.xml版本问题
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >/*版本过低*/ <web-app> <display-name>Archetype Created Web Application</display-name> </web-app> 替换为 <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
- 开发动态web的一门技术
- Sun在这些API中提供了一个接口叫做:Servlet , 想开发一个Servlet程序 只需要完成两个小步骤
编写一个类 实现Servlet接口
把开发好的Java类部署到Web服务器中
- 把实现了Servlet接口的Java程序叫做Servlet
HolloServlet
- 构建一个普通Maven项目 删除src ,再在项目里建立Moudel
- 关于Maven父子工程
//父项目中pom.xml
<modules>
<module>servler-01</module>
</modules>
//子项目pom.xml 不一定会自动生成 可手动添加
<parent>
<artifactId>javaweb-02-servlet</artifactId>
<groupId>com.wu</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
//父项目中的java包 子项目可以直接使用
- Maven环境优化
- 修改web.xml为最新的
- 将maven的结构搭建完整(java resources)
- 编写一个Servlet程序
- 编写一个普通类
- 实现Servlet接口 可以直接继承HttpServlet
- 编写Servlet映射
- JAVA程序要通过浏览器访问, 而浏览器需要连接web服务器 所以需要在web服务中注册写的servlet 还需要给一个浏览器能够访问的路径
- 配置Tomcat
Servlet原理
Mapping 问题
- 一个请求可以指定一个或多个映射路径
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.wu.servlet.HelloServlet</servlet-class>
</servlet>
<!--servlet请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/wu1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/wu2</url-pattern>
</servlet-mapping>
- 一个请求可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/wu/*</url-pattern>
</servlet-mapping>
- 默认请求路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
- 指定一些后缀或者前缀等等
注意不能写成/*.wu
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.wu</url-pattern>
</servlet-mapping>
- 优先级问题
//指定了固有映射路径优先级最高 如果找不到就会走默认的处理请求
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.wu.servlet.HelloServlet</servlet-class>
</servlet>
<!--servlet请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/wu</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.abc</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>error</servlet-name>
<servlet-class>com.wu.servlet.MyError</servlet-class>
</servlet>
//这里优先级高于 *.abc
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>