版本:idea2021.2.3
1.使用servlet
1.Java Enterprise创建JavaWeb工程
自带tomcat,生成的是HttpServlet,不是Servlet
结构
时间在前进,就不要想以前了,idea2021.2.3,可是,不带pom文件的创建方式呢?
自动生成了项目结构以及代码,是webapp,最低版本javaee8,resources目录现在还不需要也生成了。
创建javaweb项目,选择Java Enterprise
2.Java创建JavaWeb工程
1.配置文件方式实现
package com.jcli.demo01_入门;
import javax.servlet.*;
import java.io.IOException;
//配置文件方式
public class ServletDemo01 implements Servlet {
@Override
public void init(ServletConfig config) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// 每次访问Servlet都会执行Servlet里面的service方法
// eg:每次访问ServletDemo1就会来到这里
System.out.println("ServletDemo01~~~");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
web.xml
<?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">
<!-- 配置servletdemo01的路径-->
<servlet>
<servlet-name>demo01</servlet-name>
<servlet-class>com.jcli.demo01_入门.ServletDemo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo01</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
</web-app>
http://localhost:8080/servlet07/demo01
2.注解方式
package com.jcli.demo01_入门;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo02")
public class ServletDemo02 implements Servlet {
@Override
public void init(ServletConfig config) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("ServletDemo2...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
-
xml方式
-
创建一个类实现Servlet接口
-
在web.xml配置servlet
-
-
注解方式
-
创建一个类实现Servlet接口
-
在类上面添加@WebServlet("访问的路径")
-
3.extends GenericServlet
package com.jcli.demo02_进阶;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo03")
public class ServletDemo03 extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("ServletDemo3...");
}
}
4.extends HttpServlet
package com.jcli.demo02_进阶;
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("/demo04")
public class ServletDemo04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("ServletDemo4 get请求...");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("ServletDemo4 post请求...");
}
}
或者快捷生成
3.ServletContext概述
servletContext概述
ServletContext: 是一个全局上下文对象.
服务器为每一个应用(项目)都创建了一个ServletContext对象。 ServletContext属于整个应用的,不局限于某个Servlet。
ServletContext作用
作为域对象存取数据,让Servlet共享
获得文件MIME类型(文件下载)
获得全局初始化参数
获取web资源路径
4.统计网站被访问的总次数
package com.jcli.demo04_count;
import javax.servlet.ServletConfig;
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("/count")
public class CountServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
// 1.存count=0
getServletContext().setAttribute("count",0);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//2.取出count++
int count = (int) getServletContext().getAttribute("count");
count++;
// 3.再存进去
getServletContext().setAttribute("count",count);
resp.getWriter().print("<h1>Welcome</h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
package com.jcli.demo04_count;
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("/show")
public class ShowServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//处理响应乱码
resp.setContentType("text/html;charset=utf-8");
//4.取出来展示
int count = (int) getServletContext().getAttribute("count");
resp.getWriter().print("您是第"+count+"位访问的!");
}
}