文章目录

    • 一、Servlet详解【重点】
      • 1.1 Servlet核心接口和类
        • 1.1.1 Servlet 接口
        • 1.1.2 GenericServlet 抽象类
        • 1.1.3 HttpServlet类
      • 1.2 Servlet两种创建方式
        • 1.2.1 实现接口 Servlet
        • 1.2.2 继承HttpServlet (推荐)
        • 1.2.3常见锗误
      • 1.3 Servlet两种配置方式
        • 1.3.1 使用web.xml (Servlet2.5之前使用)
        • 1.3.2配置属性
        • 1.3.3使用注解(Sen/let3.0后支持,推荐)
        • 1.3.4 @WebServlet注解常用属性
    • 二、Servlet应用【重点】
      • 2.1 request 对象
        • 2.1.1get和post区别
        • 2.1.2 request主要方法
        • 2.1.3 request应用
        • 2.1.4 请求收参乱码问题
          • 2.1.4.1 get()方法 解决中文乱码
          • 2.1.4.2 post()方法 解决中文乱码
      • 2.2 response
        • 2.2.1 response 主要方法
        • 2.2.2 response 应用
        • 2.2.3解决输出中文乱码
      • 2.3 综合案例(Servlet + JDBC)
        • 2.3.1数据库
        • 2.3.2 DbUtils
        • 2.3.3 AdminDaoImpl
        • 2.3.4 AdminServicelmpl
        • 2.3.5 HTML页面代码
        • 2.3.6 LoginServlet
        • 2.3.7 ShowAllAdminServlet

一、Servlet详解【重点】

1.1 Servlet核心接口和类

  • 在Servlet体系结构中,除了实现Servlet接口,还可以通过继承 GenericServlet或 HttpServlet类,完成编写。

1.1.1 Servlet 接口

  • 在ServletAPI中最重要的是Servlet接口,所有Servlet都会直接或间接的与该接口发生联系,或是直接实现该接口,或间接继承自实现了 该接口的类。该接口包括以下五个方法:
    • init(ServletConfig config)
    • ServletConfig getServletConfig()
    • service(ServletRequest req,ServletResponse res)
    • String getServletlnfo()
    • destroy()

1.1.2 GenericServlet 抽象类

  • GenericServlet使编写Servlet变得更容易。它提供生命周期方法init和destroy的简单实现,要编写一般的Servlet,只需重写抽象 service方法即可。

1.1.3 HttpServlet类

  • HttpServlet是继承GenericServlet的基础上进一步的扩展。
  • 提供将要被子类化以创建适用于Web站点的HTTP servlet的抽象类。
  • HttpServlet的子类至少必须重写一个方法,该方法通常是以下这些方法之一:
    • doGet,如果servlet支持HTTP GET请求
    • doPost,用于 HTTP POST 请求
    • doPut,用于 HTTP PUT 请求
    • doDelete,用于 HTTP DELETE 请求

1.2 Servlet两种创建方式

1.2.1 实现接口 Servlet

/** 
*  Servlet创建的第一种方式:实现接口Servlet
* */
public class HelloServlet2 implements Servlet{@0verridepublic void destroy() {}@0verridepublic ServletConfig getServletConfigO { return null;}@0verridepublic String getServletInfo() { return null;}@0verridepublic void init(ServletConfig arg0) throws ServletException {}@0verridepublic void service(ServletRequest request, ServletResponse response) throws 	ServletException, IOException {System.out.println("OK");response.getWriter().println("welcome use servlet");}}
  • 该方式比较麻烦,需要实现接口中所有方法。

代码:

package com.wlw.servlet;import javax.servlet.*;
import java.io.IOException;
import java.util.Date;public class MyServlet implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("my first web project");System.out.println(new Date());}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

1.2.2 继承HttpServlet (推荐)

/**
*  Servlet implementation class HelloServlet
*  Servlet的第二种创建方式,继承HttpServlet ,也是开发中推荐的
*/public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{response.getWriter().print("elcome use servlet");
}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{doGet(request, response);
}
}

代码:

package com.wlw.servlet;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 HttpsServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("这是get请求");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("这是post请求");}
}

1.2.3常见锗误

  • HTTP Status 404资源找不到。

    • 第一种情况:地址书写错误。
    • 第二种情况:地址没有问题,把IDEA项目中out目录删除,然后重新运行。
  • Serlvet地址配置重复。both mapped to the url-pattern [/helloservlet] which is not permitted。

  • Serlvet地址配置错误。比如没有写/ Invalid [helloservlet2] in servlet mapping。

1.3 Servlet两种配置方式

1.3.1 使用web.xml (Servlet2.5之前使用)

<?xml version="1.0" encoding=MUTF-8"?>
<web-app xmlns:xsi="http:www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"><display-name>Web_Day11</display-name><!--Servlet的第二种配置 --><!--Servlet 配置--><servlet><!--名称--><servlet-name>hello2</servlet-name><!--Servlet的全称类名 --><servlet-class>com.wlw.servlet.HelloServlet</servlet-class><!--启动的优先级,数字越小越先起作用--><load-on-startup>1</load-on-startup></servlet><!--映射配置--><servlet-mapping><!--名称--><servlet-name>hello2</servlet-name><!--资源的匹配规则:精确匹配--><url-pattern>/hello2</url-pattern></servlet-mapping><welcome-file-list><welcome-file>login.html</welcome-file></welcome-file-list>
</web_app>

1.3.2配置属性

  • url-pattern定义匹配规则,取值说明:

    • 精确匹配 /具体的名称 只有url路径是具体的名称的时候才会触发Servlet
    • 后缀匹配 *. xxx 只要是以xxx结尾的就匹配触发Servlet
    • 通配符匹配 /* 匹配所有请求,包含服务器的所有资源
    • 通配符匹配 / 匹配所有请求,包含服务器的所有资源,不包括.jsp
  • load-on-startup

    • 元素标记容器是否应该在web应用程序启动的时候就加载这个servlet。
    • 它的值必须是一个整数,表示servlet被加载的先后顺序。
    • 如果该元素的值为负数或者没有设置,则容器会当Servlet被请求时再加载。
    • 如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的忧先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。

1.3.3使用注解(Sen/let3.0后支持,推荐)

/**
*	Servlet implementation class HelloServlet 
*	演示Servlet注解式配置 
*/
©WebServlet("/hello")
public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{response .getWriter(). print( "0K");
}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{doGet(request, response);
}
}    

1.3.4 @WebServlet注解常用属性

  • name:Serlvet名字(可选)

  • value:配置url路径,可以配置多个 (与web.xml中的url-pattern的作用是一样的)

  • urIPatterns:配置url路径,和value作用一样,不能同时使用

  • loadOnStartup:配置Servlet的创建的时机,如果是0或者正数启动程序时创建,如果是负数,则访问时创建。数子越小优先级越(与web.xml中的load-on-startup的作用是一样的)

  • 注意:同时使用web.xml与使用注解方式来配置Servlet是不冲突的

代码:

package com.wlw.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//使用注解来配置Servlet
//@WebServlet(value = {"/bs","/bss"}) //这里面定义的是访问路径
@WebServlet(urlPatterns = {"/bs","/bss"},loadOnStartup = 0)
public class BasicServlet extends HttpsServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("这是BasicServlet----get请求");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("这是这是BasicServlet----post请求");}
}

二、Servlet应用【重点】

2.1 request 对象

  • 在Servlet中用来处理客户端请求需要用doGet或doPost方法的request对象
request
在这里插入图片描述

2.1.1get和post区别

  • get请求

    • get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连
    • get方式明文传递,数据量小,不安全
    • 效率高,浏览器默认请求方式为GET请求
    • 对应的Servlet的方法是doGet
  • post请求

    • post方法是把提交的数据放在HTTP包的Body中
    • 密文传递数据,数据量大,安全
    • 效率相对没有GET高
    • 对应的Servlet的方法是doPost

2.1.2 request主要方法

方法名 说明
String getParameter(String name) 根据表单组件名称获取提交数据
void setCharacterEncoding(String charset) 指定每个请求的编码

2.1.3 request应用

  • HTML页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>注册页面</title>
</head>
<body><h1 >欢迎你</h1 ><div><!--<form action="rs" method="get">--><form action="rs" method="post"><label>用户:</label> <input type="text" name = "name"><br/><label>密码:</label> <input type="password" name= "password"><br/><input type="submit" value="提交"/></form></div>
</body>
</html>
  • Servlet 代码
package com.wlw.servlet.demo2;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(value = "/rs")
public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取请求的参数String name = req.getParameter("name");//get请求解决乱码name =  new String(name.getBytes("ISO8859-1"),"UTF-8");String password = req.getParameter("password");System.out.println("提交的数据:"+name+"\t"+password);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//post请求解决乱码//对request请求对象设置统一的编码req.setCharacterEncoding("UTF-8");//获取请求的参数String name = req.getParameter("name");String password = req.getParameter("password");System.out.println("提交的数据:"+name+"\t"+password);}
}

2.1.4 请求收参乱码问题

  • 产生乱码是因为服务器和客户端沟通的编码不一致造成的,
  • 因此解决的办法是:在客户端和服务器之间设置一个统一的编码,之后就按照此编码进行数据的传输和接收
2.1.4.1 get()方法 解决中文乱码
  • 在Tomcat7及以下版本,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是IS08859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。

  • 解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定 的编码构建字符串,解决乱码问题。

  • Tomcat8的版本中get方式不会出现乱码了(post请求还会),因为服务器对url的编码格式可以进行自动转换。

//Servlet implementation class HttpServlet
/*演示Servlet的GET请求,中文乱码的问题 */@WebServlet("/GETServlet")
public class GetServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{//获取表单提交的内容String name=request.getParameter("name");name = new String(name.getBytes("ISO8859-1"),"UTF-8");//注意点String age=request.getParameter("age");System.out.println(request.getRemoteAddr() + "发来信息:姓名:"+name+"------------------ >年龄:"+age>;}
2.1.4.2 post()方法 解决中文乱码
  • 由于客户端是以UTF-8字符编码将表单数据传输到服务器端的,因此服务器也需要设置以UTF-8字符编码逬行接收。
  • 解决方案:使用从ServletRequest接口继承而来的setCharacterEncoding(charset)方法逬行统一的编码设置
  • get() 与post() 两种请求处理乱码的方式不一样
//Servlet implementation class HttpServlet 
//*演示Servlet的POST请求,中文乱码的问题@WebServlet("/GETServlet")
public class GetServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {//设置请求参数的编码格式--对GET请求无效request.setCharacterEncoding("UTF-8"); //注意点//获取表单提交的信息String msg=request.getParameter("msg");System.out.println(request.getRemoteAddr()+ "发来信息:"+msg);}
}

2.2 response

  • response对象用于响应客户请求并向客户端输出信息。
response
在这里插入图片描述

2.2.1 response 主要方法

方法名称 作用
setHeader(name,value) 设置响应信息头
setContentType(String) 设置响应文件类型、响应式的编码格式
setCharacterEncoding(String) 设置服务端响应内容编码格式
getWriter() 获取字符输出流

2.2.2 response 应用

package com.wlw.servlet.demo2;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;
import java.io.PrintWriter;//使用注解方式配置访问路径
@WebServlet(value = "/rs")
public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//request应用//获取请求的参数String name = req.getParameter("name");//get请求解决服务器(控制台)乱码name =  new String(name.getBytes("ISO8859-1"),"UTF-8");String password = req.getParameter("password");System.out.println("提交的数据:"+name+"\t"+password);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//request应用//post请求解决服务器(控制台)乱码//对request请求对象设置统一的编码req.setCharacterEncoding("UTF-8");//获取请求的参数String name = req.getParameter("name");String password = req.getParameter("password");//System.out.println("提交的数据:"+name+"\t"+password);//response应用//响应数据给客户端,用中文时,客户端(浏览器)可能显示乱码,这是因为服务器默认采用IS08859-1编码响应内容//解决客户端乱码方式1.//resp.setCharacterEncoding("utf-8");//设置服务器端响应编码格式为 utf-8//设置客户端响应内容的头内容的文件类型及编码格式,告诉客户端我的响应内容的类型与字符编码//resp.setHeader("Content-type","text/html;charset=utf-8");//解决客户端乱码方式2.(推荐),要在获取流之前使用resp.setContentType("text/html;charset=utf-8");PrintWriter writer = resp.getWriter();writer.println("注册成功");}
}
  • 如果输出内容包含中文,则出现乱码,因为服务器默认采用IS08859-1编码响应内容

2.2.3解决输出中文乱码

  • 设置服务器端响应的编码格式

  • 设置客户端响应内容的头内容的文件类型及编码格式

response.setCharacterEncoding ("utf-8");//设置服务器端响应编码格式为 utf-8 
response.setHeader("Content-type","text/html;charset=UTF-8");//设置客户端响应内容的头内容的文件类型及编码格式
  • 不推荐

  • 同时设置服务端的编码格式和客户端响应的文件类型及响应时的编码格式

response.setContentType("text/html;charset=UTF-8");
  • 推荐

2.3 综合案例(Servlet + JDBC)

  • 要求:实现登录功能、展示所有用户功能

  • 以下仅展示关键代码

2.3.1数据库

CREATE TABLE admin(username VARCHAR(20) PRIMARY KEY,PASSWORD VARCHAR(20) NOT NULL,phone varchar(11) NOT NULL,address varchar(20) NOT NULL 
)CHARSET=utf8;INSERT INTO admin(username,PASSWORD,phone,address) 
VALUES('gavin','1123456', '12345678901','北京市昌平区');
INSERT INTO admin(username,PASSWORD,phone,address) 
VALUES('avin','1123456', '12345678901','北京市昌平区');

2.3.2 DbUtils

package com.wlw.servlet.demo3_servletProject.utils;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;public class DbUtils {private static DruidDataSource ds;private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<>();static {Properties properties = new Properties();InputStream is = DbUtils.class.getResourceAsStream("/database.properties");try {properties.load(is);ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection(){Connection connection = threadLocal.get();try {if(connection == null){connection = ds.getConnection();threadLocal.set(connection);}} catch (SQLException e) {e.printStackTrace();}return connection;}public static void begin(){Connection connection = null;try {connection = getConnection();connection.setAutoCommit(false);} catch (SQLException e) {e.printStackTrace();}}public static void commint(){Connection connection = null;try {connection = getConnection();connection.commit();} catch (SQLException e) {e.printStackTrace();}finally {ColseAll(connection,null,null);}}public static void rollback(){Connection connection = null;try {connection = getConnection();connection.rollback();} catch (SQLException e) {e.printStackTrace();}finally {ColseAll(connection,null,null);}}public static void ColseAll(Connection connection, Statement statement, ResultSet resultSet){try {if(resultSet !=null){resultSet.close();}if(statement != null){statement.close();}if(connection != null){connection.close();threadLocal.remove();}} catch (SQLException e) {e.printStackTrace();}}
}

2.3.3 AdminDaoImpl

package com.wlw.servlet.demo3_servletProject.dao.impl;import com.wlw.servlet.demo3_servletProject.dao.AdminDao;
import com.wlw.servlet.demo3_servletProject.entity.Admin;
import com.wlw.servlet.demo3_servletProject.utils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;import java.sql.SQLException;
import java.util.List;public class AdminDapImpl implements AdminDao {QueryRunner queryRunner = new QueryRunner();@Overridepublic int insert(Admin admin) {return 0;}@Overridepublic int update(Admin admin) {return 0;}@Overridepublic int delete(String username) {return 0;}@Overridepublic Admin select(String username) {try {Admin admin = queryRunner.query(DbUtils.getConnection(), "select * from admin where username=?;", new BeanHandler<Admin>(Admin.class), username);return admin;} catch (SQLException e) {e.printStackTrace();}return null;}@Overridepublic List<Admin> selectall() {try {List<Admin> admins = queryRunner.query(DbUtils.getConnection(), "select * from admin;", new BeanListHandler<Admin>(Admin.class));return admins;} catch (SQLException e) {e.printStackTrace();}return null;}
}

2.3.4 AdminServicelmpl

package com.wlw.servlet.demo3_servletProject.service.impl;import com.wlw.servlet.demo3_servletProject.dao.AdminDao;
import com.wlw.servlet.demo3_servletProject.dao.impl.AdminDapImpl;
import com.wlw.servlet.demo3_servletProject.entity.Admin;
import com.wlw.servlet.demo3_servletProject.service.AdminService;
import com.wlw.servlet.demo3_servletProject.utils.DbUtils;import java.util.List;public class AdminServiceImpl implements AdminService {private AdminDao adminDao = new AdminDapImpl();@Overridepublic Admin login(String username, String password) {Admin result = null;try {DbUtils.begin(); //开启事务Admin admin = adminDao.select(username);if(admin != null){if(admin.getPassword().equals(password)){result = admin;}}DbUtils.commint(); // 成功则提交} catch (Exception e) {DbUtils.rollback(); //失败就回滚e.printStackTrace();}return result;}@Overridepublic List<Admin> showAllAdmin() {List<Admin> result = null;try {DbUtils.begin();result= adminDao.selectall();DbUtils.commint();} catch (Exception e) {DbUtils.rollback();e.printStackTrace();}return result;}
}

2.3.5 HTML页面代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录页面</title>
</head>
<body><form action="login" method="post"><label>用户名:</label><input type="text" name="username"/><br/><label>密码:</label><input type="password" name="password"/><br/><input type="submit" value="提交"/></form>
</body>
</html>

2.3.6 LoginServlet

package com.wlw.servlet.demo3_servletProject.servlet;import com.wlw.servlet.demo3_servletProject.entity.Admin;
import com.wlw.servlet.demo3_servletProject.service.AdminService;
import com.wlw.servlet.demo3_servletProject.service.impl.AdminServiceImpl;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;
import java.io.PrintWriter;//利用注解来配置servlet访问路径(未采用web.xml)
@WebServlet(value = "/login")
public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//处理乱码req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//1.从客户端收参String username = req.getParameter("username");String password = req.getParameter("password");//2.调用业务逻辑AdminService adminService = new AdminServiceImpl();Admin admin = adminService.login(username, password);//3.处理结果PrintWriter writer = resp.getWriter();if(admin != null){writer.println("<html>");writer.println("<head>");writer.println("<meta charset='utf-8'>");writer.println("</head>");writer.println("<body>");writer.println("<h1>登录成功</h1>");writer.println("</body>");writer.println("</html>");}else {writer.println("<html>");writer.println("<head>");writer.println("<meta charset='utf-8'>");writer.println("</head>");writer.println("<body>");writer.println("<h1>登录失败</h1>");writer.println("</body>");writer.println("</html>");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

2.3.7 ShowAllAdminServlet

package com.wlw.servlet.demo3_servletProject.servlet;import com.wlw.servlet.demo3_servletProject.entity.Admin;
import com.wlw.servlet.demo3_servletProject.service.AdminService;
import com.wlw.servlet.demo3_servletProject.service.impl.AdminServiceImpl;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;
import java.io.PrintWriter;
import java.util.List;@WebServlet(value = "/showall")
public class ShowAllServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//处理乱码resp.setContentType("text/html;charset=utf-8");//调用业务逻辑AdminService adminService = new AdminServiceImpl();List<Admin> admins = adminService.showAllAdmin();//处理结果PrintWriter writer = resp.getWriter();if(admins != null){writer.println("<html>");writer.println("<head>");writer.println("<meta charset='utf-8'>");writer.println("<title>显示所有</title>");writer.println("</head>");writer.println("<body>");writer.println("<table border='1'>");writer.println("    <tr>");writer.println("        <td>username</td>");writer.println("        <td>password</td>");writer.println("        <td>phone</td>");writer.println("        <td>address</td>");writer.println("    </tr>");for (Admin admin : admins){writer.println("    <tr>");writer.println("        <td>"+admin.getUsername()+"</td>");writer.println("        <td>"+admin.getPassword()+"</td>");writer.println("        <td>"+admin.getPhone()+"</td>");writer.println("        <td>"+admin.getAddress()+"</td>");writer.println("    </tr>");}writer.println("</table>");writer.println("</body>");writer.println("</html>");}else {writer.println("<html>");writer.println("<head>");writer.println("<meta charset='utf-8'>");writer.println("<title>显示所有</title>");writer.println("</head>");writer.println("<body>");writer.println("<h1>当前没有用户</h1>");writer.println("</body>");writer.println("</html>");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

下面我们学习在 servlet 实现业务逻辑 与显示结果分离,先把代码写下:

package com.wlw.servlet.demo3_servletProject.servlet;import com.wlw.servlet.demo3_servletProject.entity.Admin;
import com.wlw.servlet.demo3_servletProject.service.AdminService;
import com.wlw.servlet.demo3_servletProject.service.impl.AdminServiceImpl;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;
import java.util.List;@WebServlet(value = "/showallcontroller") //访问路径
public class ShowAllAdminController extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//只调用业务逻辑AdminService adminService = new AdminServiceImpl();List<Admin> admins = adminService.showAllAdmin();//request作用存储数据req.setAttribute("admins",admins);//通过转发 跳转到显示页面(同时存储的数据也可以通过作用域被获得)req.getRequestDispatcher("/showalljsp").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}
package com.wlw.servlet.demo3_servletProject.servlet;import com.wlw.servlet.demo3_servletProject.entity.Admin;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;
import java.io.PrintWriter;
import java.util.List;@WebServlet(value = "/showalljsp")//访问路径
public class ShowAllAdminJSP extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//只负责显示页面//处理乱码resp.setContentType("text/html;charset=utf-8");//通过request作用域获得数据,(在此得到的是数据库里表admin的全部数据)List<Admin> admins = (List) req.getAttribute("admins");//处理结果PrintWriter writer = resp.getWriter();if(admins != null){writer.println("<html>");writer.println("<head>");writer.println("<meta charset='utf-8'>");writer.println("<title>显示所有</title>");writer.println("</head>");writer.println("<body>");writer.println("<table border='1'>");writer.println("    <tr>");writer.println("        <td>username</td>");writer.println("        <td>password</td>");writer.println("        <td>phone</td>");writer.println("        <td>address</td>");writer.println("    </tr>");for (Admin admin : admins){writer.println("    <tr>");writer.println("        <td>"+admin.getUsername()+"</td>");writer.println("        <td>"+admin.getPassword()+"</td>");writer.println("        <td>"+admin.getPhone()+"</td>");writer.println("        <td>"+admin.getAddress()+"</td>");writer.println("    </tr>");}writer.println("</table>");writer.println("</body>");writer.println("</html>");}else {writer.println("<html>");writer.println("<head>");writer.println("<meta charset='utf-8'>");writer.println("<title>显示所有</title>");writer.println("</head>");writer.println("<body>");writer.println("<h1>当前没有用户</h1>");writer.println("</body>");writer.println("</html>");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. C#可能为空对象属性取值比较的方法

    string strs = null;// 出现异常bool bool1 = strs.Length == 0;// 不会出现异常 strs?.Length 的类型是int?(可为null的int类型)bool bool2 = (strs?.Length ?? 0) == 0;...

    2024/4/29 5:00:10
  2. 该如何一步步构建一个基于Redis的分布式锁?Redis分布式锁还是zookeeper锁好?

    一、介绍讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布…...

    2024/4/29 5:00:10
  3. 使用nodejs+websocket实现网络同步编辑实例

    网络协同编辑小例子 主要使用nodejs+websocket实现,可以实现不同房间共同编辑,代码比较粗糙,便于学习,主要是为了实现XYNotes部分功能实现的小例子。 详细代码主要代码 let ws = require(ws); //引入websocket模块 let uuid = require(uuid); //引入创建唯一id模块let sock…...

    2024/5/1 20:37:21
  4. 特殊矩阵的存储压缩及解压

    特殊矩阵的存储压缩及解压 #define _CRT_SECURE_NO_WARNINGS #define EMPTY_QUEUE_ERROR -999999 #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <ctype.h> #define MAXLEN 100 typedef int Elem…...

    2024/4/29 4:59:58
  5. 特征构造常用反复噶

    统计量特征 1.四分位树,中位数,均值,标准差,偏差,偏度,峰度,离散系数;peek,脉冲等图形化的特征。 2.长短期统计量。(控制1中统计数据的时间长短) 3.时间衰减。(给不同时间的特征不同的权重) 周期值 1.前n个周期相同时间段的同期值。++其统计量。 2.同比/环比 数据…...

    2024/4/29 1:15:47
  6. 解决vue项目中调用后台接口成功获取到数据但元素渲染报null错误

    由于获取到后台数据是个对象,所以我在data里面定义数据的时候给赋的初值是null 假设: data(){return {videoObj:null} }template模板里对应的DOM元素: <div>{{ videoObj.title}} </div>由于给videoObj赋了null这个初值,所以在调用接口前初始渲染读取的是null,…...

    2024/4/29 4:59:53
  7. 覆盖索引与SQL优化

    文章目录什么叫做覆盖索引1.无WHERE条件的查询优化:2、二次检索优化3、分页查询优化 什么叫做覆盖索引 在了解覆盖索引之前我们先大概了解一下什么是聚集索引(主键索引)和辅助索引(二级索引) 聚集索引(主键索引): 聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中…...

    2024/4/29 3:04:35
  8. Python_头条项目介绍(1)

    产品效果用户端移动webhttp://toutiao.research.itcast.cniOShttps://testflight.apple.com/join/pg2Axv6N (App下载地址)Androidhttps://fir.im/itcast (App下载地址)自媒体端http://ttmp.research.itcast.cnMIS管理后台http://ttmis.research.itcast.cn=====================…...

    2024/4/29 3:04:30
  9. php判断输入字符出现多少次,最多出现多少次源代码

    <?php $str=$_POST[a1]; $arr=str_split($str); $arr1=array(); for($i=0;$i<strlen($arr);$i++){$x=$arr[$i];$key=array_keys($arr1);if(in_array($x,$key)){$arr1[$x]+=1;}else{$arr1[$x]=1;} } $pos = array_search(max($arr1), $arr1); echo $pos.出现最多.<br&…...

    2024/4/28 16:20:17
  10. 训练好后的神经网络如何快速定点化?

    训练好后的神经网络如何快速定点化?如何把浮点权重快速定点化后使用在嵌入式设备中tensorflow模型的定点化如何量化和量化意义? 网络参数是按层组织,每层数值都在同一数量级,即范围相差不大,如[-6.0,4.0],有大量论文研究表明确认值最大和最小后每层数据使用8bit定点化量化…...

    2024/4/29 4:59:59
  11. new的全局重载,类内部重载!

    最近,有个童鞋问我,他对下面这种 new的奇怪写法不明白,很怪异,不像平时的用法,其实这个是new的一种用法而已,只是他接触的少,所以迷糊了,看看下面的代码,大家就知道为什么可以这么写了!#include <iostream> using namespace std;void* operator new(size_t siz…...

    2024/5/4 19:14:32
  12. 云服务器构建微信公众号管理系统

    一.准备工作 开通云服务器安装 我准备的是(Ubuntu18.04 Apache PHP7.1)的镜像 配置安全组 采用FileZilla文件传输工具和putty终端工具 FileZilla下载地址:https://filezilla-project.org/download.php?type=client putty下载地址:https://github.com/larryli/PuTTY/releas…...

    2024/4/29 4:59:40
  13. 阿里云笔记3

    阿里云服务器安装docker和docker-compose学习笔记系统环境拉取docker的镜像源安装pip3安装docker-compose 系统环境 基于Ubuntu 18.04 #安装docker sudo apt-get purge docker-ce 安装社区版docker拉取docker的镜像源 curl -sSL https://get.daocloud.io/docker | sh安装pip3 s…...

    2024/4/29 4:59:33
  14. 代理模式:静态代理;JDK动态代理;cglib动态代理

    eg:加减乘除 1.新建ArithmeticCalculator.java接口 public interface ArithmeticCalculator {int add(int i,int j);int sub(int i,int j);int mul(int i,int j);int div(int i,int j); }2.实现类ArithmeticCalculatorLoggingImpl.java(传统) public class ArithmeticCalcul…...

    2024/4/29 4:59:55
  15. pytorch文档阅读笔记-04-使用多块GPU进行训练

    东阳的学习记录,坚持就是胜利!文章目录nn.DataParallel参数警告使用nn.parallel.DistributedDataParallel例子 nn.DataParallel torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)在模块级别上实现数据并行。 此容器通过将mini-batch划分到不同的设…...

    2024/4/29 4:59:32
  16. Django

    文章目录Django命令行命令视图路由HttpRequestHttpResponse其他方法调⽤模板返回重定向反向定位动态路由模板模板位置模板语法变量过滤器内置标签 Django 命令行命令 #启动项目 python manage.py runserver #创建一个APP,还要在setting.py里的INSTALLED_APPS添加myapp python m…...

    2024/4/29 4:59:16
  17. IDEA 中使用 spring-boot-devtools 实现热部署

    IDEA 中使用 spring-boot-devtools 实现热部署热部署可以让我们在更新代码时能实时的去测试是否正确,而不是每次都要重启项目,缩短重启的浪费的时间。配置IDEA 首先要让IDEA 能够自动编译,自动加载。打开settings ,找到如下位置,勾选 Build project automatically然后 快捷…...

    2024/5/1 2:34:13
  18. 拯救者 R7000 2020 Nvidia 1650 Win10 安装 Ubuntu 20.04 解决黑屏问题

    安装https://blog.csdn.net/ai_faker/article/details/106874185下载系统 iso 文件制作U盘启动盘压缩磁盘开机F2,进入 Bios 将 Graphic Device 设置为 Switchable Graphics, More 进入 security 将 secure boot 设为 Disabled保存退出,开机 F12 进入安装过程记住设置的账号:…...

    2024/4/29 4:59:14
  19. TCP /IP端口的分配

    端口概念逻辑意义上的端口,即TCP /IP协议中的端口,在报头中占2个字节即16位,范围是从0-65535。端口号用来表示和区别网络中的不同应用程序,即不同的进程。端口的分类(1)公认的端口 0 ~ 1023,这些端口明确绑定某些服务协议,不能随便分配。FTP : 21 TELNET : 23 SMTP : 2…...

    2024/4/29 4:59:29
  20. Allegro专题【6】——Allegro 使用小记

    1. 推挤时,45 度走线推入焊盘中 走线状态下,去掉下图所选之前的 “√”2. 推挤走线 命令:slide3. Z-copy 命令 Z-copy 用于 PCB 导入板框后,禁止布线层的生成(同时也是 PCB 覆铜时区域),操作方法如下: (1)先确定板框层(board geometry outline),如下图:(2)选择…...

    2024/4/29 4:59:02

最新文章

  1. python爬虫实战

    import requests import json yesinput(输入页数&#xff1a;) yesint(yes)headers {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q0.9","content-type": "application/json",…...

    2024/5/5 2:34:45
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. SpringMVC初始化工程

    SpringMVC初始化工程 本文采用maven作为构建工具,SpringMVC作为主框架。 创建一个maven的web工程,并配置pom文件<!-- pom.xml --> <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0&qu…...

    2024/5/4 13:20:42
  4. 基于springboot实现影城管理系统项目【项目源码+论文说明】

    基于springboot实现影城管理系统演示 摘要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多生活之中&#xff0c;随之就产生了“小徐影城管理系统”&#xff0c;这样就让小徐影城管理系统更加方便简单。 对于本小…...

    2024/5/3 2:03:48
  5. 权限提升-Linux系统权限提升篇VulnhubRbash绕过DockerLXD容器History泄漏shell交互

    知识点 1、普通用户到Linux-泄漏-History 2、普通用户到Linux-限制-Rbash绕过 3、普通用户到Linux-容器-LXD&Docker 4.Linux系统提权-web/普通用户-docker逃逸&提权&shell交互 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及…...

    2024/5/1 13:20:00
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/4 12:05:22
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/4 11:23:32
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/4 14:46:16
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/4 23:54:44
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/4 12:10:13
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/4 23:54:49
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/4 23:54:44
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/4 14:46:12
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/4 14:46:11
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/4 14:46:11
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/5 2:25:33
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/4 21:24:42
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/4 12:39:12
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/4 13:16:06
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/4 16:48:41
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/4 14:46:05
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/4 2:00:16
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/4 23:54:30
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/4 9:07:39
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/4 14:46:02
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57