课程信息
● 学习课程:Java工程师2022版
● 章节名称:Servlet进阶-Servlet开发应用实践
● 讲师:八戒猪
课程内容
1、Web应用的中文乱码
发送发与接受方对数据使用不同的字符集解析就会产生乱码
解决:保证浏览器与服务器统一为UTF-8编码
在Servlet中请求与响应都需要设置UTF-8字符集
Tomcat8之后对于发送过来GET的请求参数默认编码为UTF-8进行解析
Tomcat8之前,默认编码为IOS-8859-1,需要在Server.xml配置字符集
<Connector port="8080" ... URIEncoding="UTF-8">
对于Post请求需要指定编码
request.setCharacterEncoding(“UTF-8”);
对于响应头信息指定编码
response.setContentType(“text/html;charset=utf-8”);
2.web.xml常用配置
- 修改web应用默认首页
- web.xml中配置
<Welcom-file-list>
<!-- 按顺序查找默认首页,out目录中存在就加载-->
<welcom-file>index.html</welcom-file>
<welcom-file>default.html</welcom-file>
</Welcom-file-list>
- Servlet通配符映射及初始化参数
<servlet>
<servlet-name>pattern</servlet-name>
<sevlet-class>com.imooc.servlet.PatternServlet</servlet-class>
</servlet>
<servlet-mapping>
<serlet-name>pattern</servlet-name>
<!--通配URI配置http://localhost:8080/class/780-->
<url-pattern>/class/*</url-pattern>
</servlet-mapping>
<!--前缀+后缀的混合通配符是不可以的,如"/class/*/class”是错误的。-->
<!-- 对所有的请求进行映射,使用“/”而不是“/*”。-->
// doGet方法获取课程id
String uri = request.getRequestURI(); // URI:/class/785
String id = uri.substring(uri.lastIndexOf("/") +1 );
- 启动时加载Servlet 工作中用于系统的预处理
- web.xml使用设置启动加载,servlet中init方法执行顺序
<load-on-startup>0-9999</load-on-stratup> 数字越小优先级越高
<servlet>
<servlet-name>initTable</servlet-name>
<servlet-class>com.imooc.servlet.startup.InitTable</servlet-class>
<!--启动参数配置-->
<init-param>
<param-name>database</param-name>
<param-value>db01</param-value>
</init-param>
<!--启动加载-->
<load-on-startup>0</load-on-startup>
</servlet>
// 参数获取
public void init(ServletConfig config) throws ServletException{
String database = config.getInitParameter("database");
System.out.println("正向数据库"+database+"写入数据");
}
- 设置404、500等状态码默认页面
<!-- 设置404和500的自定义页面-->
<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.html</location>
</error-page>
- JavaWeb打包与发布
采用war包进行发布,在pom.xml文件中进行配置,使用packaging标签。使用maven的package命令,打包到target目录。只需要一个配置语句即可
<packaging>war</packaging>
利用Maven实现war包导出,将程序运行所需的所有资源都包含进来了。
使用scope声明pom中依赖组件的作用范围
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- 这里使用provided的目的是因为javax.servlet-api已经在Tomcat的lib目录中包含了,
本身运行时已经依赖这个组件,因此无需再在运行时,一并包含在war包中了。-->
<!-- 打包时,可以给war包起名,使用build标签 -->
<build>
<finalName>web-servlet</finalName>
</build>
maven的Scope属性
compile默认值依赖组件作用与所有阶段
provided 依赖组件仅作用在编译与测试阶段
runtime 依赖组件仅作用在测试和运行
test 依赖组件仅作用在测试阶段
system 本地Jar文件仅在编译与测试阶段
4、程序发布和运行:将war包复制到{TOMCAT_HOME}/webapps目录下
复制到目录后,双击startup.bat运行Tomcat,,此时会解压缩war包,本地可以访问了。
http://localhost:8080/session/login
本地访问时,会有404问题,原因就是解压缩的工程师文件生成的web-servlet
文件夹会被认为是应用上下文。
取消上下文,在Tomcat的server.xml文件中,在host标签中配置context标签。
<Context docBase="web-servlet" path="/"/>
然后就和在开发环境中访问程序是一致的了。
学习收获
学习了对于常见问题UTF-8的原因以及解决办法,然后是对于web.xml的配置,比如配置首页,设置通配符,设置启动加载,配置404,500等页面,然后是maven打war包配置,发布,对于maven中scoped属性配置的含义
打卡截图
共同学习,写下你的评论
评论加载中...
作者其他优质文章