javaWeb的web核心
1.什么是Javaweb
一、HTTP
1.请求数据格式
PS:重点:get和post区别
2.响应数据格式
二、web服务器–Tomcat
我下载的是tomcat8.0
运行tomcat中的startup.bat后,然后网页输入localhost:8080,就会显示tomcat页面。如果想修改端口号,那就该下图中的port
两种方式:
一种是将Tomcat集成到idea中,进行项目布置即可
一种是pom.xml添加Tomcat插件
三、Servlet
查看javaEE的文档,发现Servlet是个接口
一、Servlet快速入门的开发步骤
package com.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo1")
public class servletDemo1 implements Servlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet!");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
}
在打开的路劲后加/demo1,但是页面不显示内容,而是在控制台上显示Hello Servlet!
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
二、执行流程
三、生命周期
package com.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(value = "/demo1",loadOnStartup = 1)
public class servletDemo1 implements Servlet {
//初始化方法
//1.调用时机:默认情况才,Servlet被第一次访问时,调用
//2.调用次数:1次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init running");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//提供服务的方法
//1.调用时机:每一次Servlet被访问时,调用
//2.调用次数:多次
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet!");
}
@Override
public String getServletInfo() {
return null;
}
//销毁方法
//1.调用时机:内存释放时候或者服务器关闭的时候,Servlet对象会被销毁,调用
//2.调用次数:1次
@Override
public void destroy() {
System.out.println("感谢你的使用");
}
}
Servlet方法介绍
Servlet的体系结构
package com.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/demo2")
public class servletDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get...");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post....");
}
}
运行代码后发现只有get方法被调用了
如何调用post方法了?
在webapp文件包下创建文件a.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/javaweb/demo2" method="post">
<input name="username"><input type="submit">
</form>
</body>
</html>
action是路径,javaweb是我tomcat打开请求的路径,在打开的网页中把路经从http://localhost:8080/javaweb/demo2改http://localhost:8080/javaweb/a.html
package com.web;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class servletDemo3 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//根据请求方式的不同,进行分别的处理
HttpServletRequest request=(HttpServletRequest) req;
//1获取请求方式
String method=request.getMethod();
//2.判断
if("GET".equals(method)){
//get方式处理逻辑
doGET(req,res);
}else if("POST".equals(method)){
//post方式处理逻辑
doPOST(req,res);
}
}
protected void doPOST(ServletRequest req, ServletResponse res) {
}
protected void doGET(ServletRequest req, ServletResponse res) {
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
后面如果要使用自己的Servlet,就可以创建子类去继承这个类
package com.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/demo3")
public class myHttpservlet extends servletDemo3 {
@Override
protected void doGET(ServletRequest req, ServletResponse res) {
System.out.println("get....");
}
@Override
protected void doPOST(ServletRequest req, ServletResponse res) {
System.out.println("post...");
}
}
四、总结
五、servlet urlPattern配置
urlPattern就是访问路径
package com.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//配置多路径
@WebServlet({"/demo4","/demo5"})
public class servletDemo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get...");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
访问路径demo4和demo5都可以
六、xml配置方式编写Servlet
<?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">
<!--Servlet全类名-->
<servlet>
<servlet-name>demo5</servlet-name>
<servlet-class>com.web.servletDemo5</servlet-class>
</servlet>
<!--Servlet访问路径-->
<servlet-mapping>
<servlet-name>demo5</servlet-name>
<url-pattern>/demo5</url-pattern>
</servlet-mapping>
</web-app>
package com.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class servletDemo5 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo5 get....");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}