目录
main下创建并修改java、resources文件格式(新版格式会自动转化)
Maven架构管理工具
方便导入jar包
Maven核心思想:约定大于配置(Maven规定号如何编写java代码,必须要按照这个规定)
下载安装Maven
下载完成后解压
配置环境变量
配置:
- M2_HOME maven 目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置%MAVEN_HOME%\bin(%表示引入MAVEN_HOME)
测试Maven是否安装成功 mvn -version
a'la'li阿里云镜像配置
镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,又恢复成许多文件,RAID 1和RAID 10使用的就是镜像。常见的镜像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。
作用:加速下载
国内建议使用阿里云的镜像
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
本地仓库
建立一个本地仓库:localRepository
在maven解压包下创建自己的本地仓库maven-repo
复制地址D:\Maven\apache-maven-3.8.1\maven-repo到conf/settings.xml配置中引入本地仓库
在IDEA中使用Maven
创建Maven项目(勾选模板)
1,启动IDEA创建Maven项目(勾选模板)
等待项目初始化
显示BUILD SUCCESS说明创建成功
创建成功后检查Maven配置
只有在勾选了web应用下有,普通不勾选没有
main下创建并修改java、resources文件格式(新版格式会自动转化)
修改格式方式1:
修改格式方式2:
进入Project Structure→Modules→main,需要改变哪个文件夹点击哪个,然后点击上面的Mark as改变
进入Project Structure
1
2
3.Ctrl+Alt+Shift+S
创建普通Maven项目
在IDEA中配置Tomcat
解决警告问题
Warning:No artifacts marked for development(访问一个网站需要指定一个文件夹名字)
pom.xml文件
pom.xml文件是Maven的核心配置文件
maven由于它的约定大于配置,我们之后可能遇到,写的配置文件无法被导出或者生效的问题,解决方案:
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
Servlet
servlet介绍:
- Servlet是sun公司开发动态web的一门技术
- sun公司在这些API中提供一个接口叫:Servlet
- 开发servlet程序:1.编写类实现接口servlet2.把开发好的类部署到web服务器中
把实现了Servlet接口的Java程序叫做,Servlet
创建maven项目HelloServlet
Servlet在sun公司有两个默认的实现类:HttpServlet,GenericServlet
1.构建一个普通的maven项目,删除src,这个空的工程就是maven主工程
2.关于maven父子工程的理解:
父项目中会有
<modules>
<module>servlet-01</module>
</modules>
子项目中会有
<parent>
<artifactId>HelloServlet</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
父项目中的jar包子项目可以直接使用
3.Maven环境优化
修改web.xml为最新的
将maven的结构搭建完整
4.编写一个Servlet程序
编写一个普通类,
public class HelloServlet extends HttpServlet {
//由于get/post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我妹最漂亮");
PrintWriter writer = resp.getWriter();//响应流
writer.print("HelloServlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
如果没有勾选webapp,进行如下操作:
右键点击需要加入webapp的项目→选择Add Framework Support
进入后选择Web Application→ok
实现Servlet接口,这里直接继承HttpServlet
public class HelloServlet extends HttpServlet {
//由于get/post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();//响应流
writer.print("我妹最漂亮");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
5,编写Servlet映射
为什么要映射,写的是java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以需要在web服务中注册我们写的Servlet,还需要给他一个浏览器能访问的路径
在web.xml中注册和配映射servlet
<!-- 注册servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.yl520.servlet.HelloServlet</servlet-class>
</servlet>
<!-- servlet映射路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>hello</url-pattern>
</servlet-mapping>
</web-app>
6.配置tomcat
7,启动测试
1. 如果出现乱码,在tomcat文件conf→logging.properties中将下面一行UTF-8改为GBK即可。
java.util.logging.ConsoleHandler.encoding = UTF-8改为GBK
2,没有target文件夹
可能是没有勾选显示,如下勾选后就可以显示了。
Servlet原理
servlet是由web服务器调用,web服务器在收到浏览器请求后
Mapping问题
一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
一个Servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
一个Servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
默认映射路径
<!-- 默认请求路径(不进入index.jsp,直接进入写的HelloServlet页面)-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
指定一些后缀或前缀...
<!--可以自定义后缀实现请求映射
注意点:*前面不能加项目映射的路径
1314.yl520-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.yl520</url-pattern>
</servlet-mapping>
Error
public class ErrorServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
writer.print("<h1>404<h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
<!-- 404-->
<servlet>
<servlet-name>error</servlet-name>
<servlet-class>com.yl520.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
优先级问题
指定了固有的映射路径,优先级最高,找不到就会走默认的映射路径