系列文章目录
IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介
IDEA项目实践——JavaWeb简介以及Servlet编程实战
文章目录
(1)获取ServletContext(多个Servlet共享)的初始化参数
(2)ServletContext读取web应用中的资源文件的方法
第二课:编写web.xml配置文件+ServletConfig与ServletContext
前言
本文主要讲解Java Web的相关内容以及servlet编程
一.JavaWeb概述/开发基础
1.XML基础
(1)XML概述
(2)XML语法
(3)DTD约束
(4)Schema约束(XML Schema 比 DTD 更强大)
2.Web基础知识
Web是一个分布式的超媒体信息系统。
从技术层面上看,Web技术可以分为客户端技术和服务器端技术。
-
Web客户端技术
Web客户端的主要任务是展现信息内容。
相关技术:
1.HTML语言(内容)
2.CSS样式表(外观)
3.客户端脚本语言-JavaScript(行为)
-
Web服务器端技术
JSP技术
3.Web开发工具的安装与配置
(1)JDK
a) 下载,到oracle官网下载
b) 安装
c) 配置环境变量
i. JAVA_HOME
ii. Path
(2)Tomcat服务器
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
Tomcat官网:Apache Tomcat® - Welcome!
下载与安装
启动测试
1.启动服务:进入tomcat的根目录,然后进入bin文件夹,双击startup.bat,出现如下界面
2.打开浏览器,在地址栏输入http://localhost:8080/,如果能够看到如下界面,就说明Tomcat服务器安装成功!
注意:Tomcat的端口号,默认为8080.如果被占用,则服务器不能使用,需要重新配置Tomcat的端口号。
修改方法:修改conf下的server.xml(tomcat安装目录\conf\server.xml)
<Connector port="8000" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
了解:
查看端口号的命令:netstat –ano或者netstat –ano|findstr “8080”,找到占用端口的pid
查看pid对应的程序名:tasklist |findstr “pid”
此处附上安装连接:安装Tomac服务器——安装步骤以及易出现问题的解决方法
4.发布静态网站
1.先写一个静态网页:index.html
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap5 实例</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container p-5 my-5 border">
<h1>我的第一个 Bootstrap 页面</h1>
<p>这个容器有一个边框和一些边距。</p>
</div>
<div class="container p-5 my-5 bg-dark text-white">
<h1>我的第一个 Bootstrap 页面</h1>
<p>这个容器具有深色背景色和白色文本,以及一些额外的边距。</p>
</div>
<div class="container p-5 my-5 bg-primary text-white">
<h1>我的第一个 Bootstrap 页面</h1>
<p>这个容器具有蓝色背景色和白色文本,以及一些额外的边距。</p>
</div>
</body>
</html>
2.创建一个名为staticWeb的文件夹,把上面的网页放进去,然后把整个文件夹复制到tomcat根目录下的webapps文件夹中。
3.启动tomcat服务器,在地址栏输入 http://localhost:9528/staticWeb/index.html,即可看到以下网页
打开的页面形式
4.通过WIN+R打开运行,输入cmd,打开命令提示符窗口,输入ipconfig,查看本机的ip地址。
5.此时,同在一个局域网内的电脑,都可以通过http://10.5.29.235:8080/staticWeb/index.html(ip地址改为自己的)访问到上面的网页。
二、Servlet编程
2.1 Servlet编程基础
(1)什么是Servlet
Servlet是基于Java语言的Web编程技术,部署在服务器端的Web容器里,获取客户端的访问请求,并根据请求生成响应信息返回给客户端。
创建Servlet的方式如下图:一般创建Servlet都是通过继承HttpServlet来实现,如图中的HelloServlet。(类图快捷键:Ctrl + Alt + U)
继承httpServlet
1.创建一个基于Maven的web项目。
2.创建java和resources文件夹
创建完成之后原本的项目目录:
Web项目里面没有Java和resources文件夹,需要我们自己添加
添加Java和resources文件夹,选择默认的即可,自己写可能不对。
Web项目多了一个webapp的文件夹。
3.修改web.xml的版本
默认的Web版本为2.3 的版本,此处需要更换为4.0以上的版本
可以直接手动删除web.xml
或者是点击文件-->project structure调出项目结构。
选择对应的Maven项目,点击“ - ”删除
选择+号新增,注意核对一下路径问题
最后记得应用一下
完成之后查看一下
<?xml version="1.0" encoding="UTF-8"?>
<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">
</web-app>
4.导入servlet的依赖
<!--servlet的依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
将其放在控制层的包controller包里面
package com.ambow.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/first") //虚拟路径
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理get请求
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理post请求
}
}
此处做一简单案例演示,在webappp文件夹里面创建一个index.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="a.html" method="get">
<input type="text" name="username" /><br>
<input type="password" name="password" /><br>
<input type="text" name="age" /><br>
<input type="submit" value="提交">
</form>
</body>
</html>
假设在表单里面提交数据
提交完成之后,查看上面的地址栏,可以看到地址栏的信息是显示出来的,极其不安全。
如果将上述的get换成Post之后,将不会在地址栏出现内容,这样使用的信息更加安全。
Get与Post的区别:
Get是以明码的方式提交数据,而Post是以加密的形式提交的,不会造成数据泄露。
使用上来说,Get适用于不太敏感的数据信息,二对于Post适用于比较敏感的信息。
回到前面创建的servlet类里面
对于Get和Post两个方法来说,他们都有自己的request和response参数
- request是请求对象
- response是响应对象
小的演示案例:
也可以将前面的HTML页面直接放在writer的内容里面
在前面的Get方法里面加入以下代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理get请求
/*
request -- 请求对象
response -- 响应对象
*/
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.println(" <!DOCTYPE html>\n" +
" <html>\n" +
" <head>\n" +
" <title>Bootstrap5 实例 -- Hello Servlet!</title>\n" +
" <meta charset=\"utf-8\">\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n" +
" <link href=\"https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css\" rel=\"stylesheet\">\n" +
" <script src=\"https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js\"></script>\n" +
" </head>\n" +
" <body>\n" +
" \n" +
" <div class=\"container p-5 my-5 border\">\n" +
" <h1>我的第一个 Bootstrap 页面</h1>\n" +
" <p>这个容器有一个边框和一些边距。</p>\n" +
" </div>\n" +
" \n" +
" <div class=\"container p-5 my-5 bg-dark text-white\">\n" +
" <h1>我的第一个 Bootstrap 页面</h1>\n" +
" <p>这个容器具有深色背景色和白色文本,以及一些额外的边距。</p>\n" +
" </div>\n" +
" \n" +
" <div class=\"container p-5 my-5 bg-primary text-white\">\n" +
" <h1>我的第一个 Bootstrap 页面</h1>\n" +
" <p>这个容器具有蓝色背景色和白色文本,以及一些额外的边距。</p>\n" +
" </div>\n" +
" \n" +
" </body>\n" +
" </html>");
writer.flush();
writer.close();
}
在后续的代码里面可以使用这个来写动态的页面
5 将本地的Tomact服务器配置在IDEA里面
点击+号,找到本地的Tomact服务器
配置Tomact的服务器
部署项目
此时组件也就部署成功
需要再写之前加入中文的编码以及页面的访问方式为HTML,前面代码里面有。
(2)Servlet的生命周期
- init():当服务器启动,第一次访问Servlet的时候,servlet进行初始化
- service():在服务器启动期间,可以不断的处理请求。
- destroy():在服务器停止的时候,去销毁Servlet.
添加相关的映射
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<url-pattern>/second</url-pattern>
</servlet-mapping>
编辑代码:
package com.ambow.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class SecondServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("Servlet初始化....");
}
@Override
protected void service(HttpServletRequest req, Http