ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

news/2024/7/7 15:30:52/文章来源:https://blog.csdn.net/weixin_30455067/article/details/96986451

上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据。

 

目录:

ASP.NET MVC5 网站开发实践 - 概述

ASP.NET MVC5 网站开发实践(一) - 项目框架

ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑

ASP.NET MVC5 网站开发实践(二) - 用户部分(1)用户注册

ASP.NET MVC5 网站开发实践(二) - 用户部分(2)用户登录、注销

ASP.NET MVC5 网站开发实践(二) - 用户部分(3)修改资料、修改密码

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理架构

ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表

 

一、删除文章

由于公共模型跟,文章,附件有关联,所以这里的删除次序很重要,如果先删除模型,那么文章ModelID和附件的ModelID多会变成null,所以要先先删除文章和附件再删除公共模型。

由于公共模型和附件是一对多的关系,我们把删除公共模型和删除附件写在一起。

在BLL的BaseRepository类中有默认的Delete方法,但这个方法中仅删除模型,不会删除外键,所以在CommonModelRepository在new一个出来封印掉默认的方法。

public new bool Delete(Models.CommonModel commonModel, bool isSave = true){if (commonModel.Attachment != null) nContext.Attachments.RemoveRange(commonModel.Attachment);nContext.CommonModels.Remove(commonModel);return isSave ? nContext.SaveChanges() > 0 : true;}

这个的意思是封印掉继承的Delete方法,在新的方法中如果存在附加那么先删除附件,再删除公共模型。那么如果我们还想调用基类的Delete方法怎么办?可以用base.Delete。

好了,现在可以开始删除了。

在ArticleController中添加Delete方法

/// <summary>/// 删除/// </summary>/// <param name="id">文章id</param>/// <returns></returns>public JsonResult Delete(int id){//删除附件var _article  = articleService.Find(id);if(_article == null) return Json(false);//附件列表var _attachmentList = _article.CommonModel.Attachment;var _commonModel = _article.CommonModel;//删除文章if (articleService.Delete(_article)){//删除附件文件foreach (var _attachment in _attachmentList){System.IO.File.Delete(Server.MapPath(_attachment.FileParth));}//删除公共模型
                commonModelService.Delete(_commonModel);return Json(true);}else return Json(false);}

 

二、修改文章

这个部分跟添加文章非常类似

首先在ArticleController中添加显示编辑视图的Edit

/// <summary>/// 修改/// </summary>/// <param name="id"></param>/// <returns></returns>public ActionResult Edit(int id){return View(articleService.Find(id));}

右键添加视图,这个跟添加类似,没什么好说的直接上代码

@section scripts{<script type="text/javascript" src="~/Scripts/KindEditor/kindeditor-min.js"></script><script type="text/javascript">//编辑框
        KindEditor.ready(function (K) {window.editor = K.create('#Content', {height: '500px',uploadJson: '@Url.Action("Upload", "Attachment")',fileManagerJson: '@Url.Action("FileManagerJson", "Attachment", new { id = @Model.CommonModel.ModelID })',allowFileManager: true,formatUploadUrl: false});//首页图片var editor2 = K.editor({fileManagerJson: '@Url.Action("FileManagerJson", "Attachment", new {id=@Model.CommonModel.ModelID })'});K('#btn_picselect').click(function () {editor2.loadPlugin('filemanager', function () {editor2.plugin.filemanagerDialog({viewType: 'VIEW',dirName: 'image',clickFn: function (url, title) {var url;$.ajax({type: "post",url: "@Url.Action("CreateThumbnail", "Attachment")",data: { originalPicture: url },async: false,success: function (data) {if (data == null) alert("生成缩略图失败!");else {K('#CommonModel_DefaultPicUrl').val(data);K('#imgpreview').attr("src", data);}editor2.hideDialog();}});}});});});});</script>
}@model Ninesky.Models.Article
@using (Html.BeginForm())
{ @Html.AntiForgeryToken()<div class="form-horizontal" role="form"><h4>添加文章</h4><hr />@Html.ValidationSummary(true)<div class="form-group"><label class="control-label col-sm-2" for="CommonModel_CategoryID">栏目</label><div class="col-sm-10"><input id="CommonModel_CategoryID" name="CommonModel.CategoryID" data-options="url:'@Url.Action("JsonTree", "Category", new { model="Article" })'" class="easyui-combotree" style="height: 34px; width: 280px;" value="@Model.CommonModel.CategoryID" />@Html.ValidationMessageFor(model => model.CommonModel.CategoryID)</div></div><div class="form-group">@Html.LabelFor(model => model.CommonModel.Title, new { @class = "control-label col-sm-2" })<div class="col-sm-10">@Html.TextBoxFor(model => model.CommonModel.Title, new { @class = "form-control" })@Html.ValidationMessageFor(model => model.CommonModel.Title)</div></div><div class="form-group">@Html.LabelFor(model => model.Author, new { @class = "control-label col-sm-2" })<div class="col-sm-10">@Html.TextBoxFor(model => model.Author, new { @class = "form-control" })@Html.ValidationMessageFor(model => model.Author)</div></div><div class="form-group">@Html.LabelFor(model => model.Source, new { @class = "control-label col-sm-2" })<div class="col-sm-10">@Html.TextBoxFor(model => model.Source, new { @class = "form-control" })@Html.ValidationMessageFor(model => model.Source)</div></div><div class="form-group">@Html.LabelFor(model => model.Intro, new { @class = "control-label col-sm-2" })<div class="col-sm-10">@Html.TextAreaFor(model => model.Intro, new { @class = "form-control" })@Html.ValidationMessageFor(model => model.Intro)</div></div><div class="form-group">@Html.LabelFor(model => model.Content, new { @class = "control-label col-sm-2" })<div class="col-sm-10">@Html.EditorFor(model => model.Content)@Html.ValidationMessageFor(model => model.Content)</div></div><div class="form-group">@Html.LabelFor(model => model.CommonModel.DefaultPicUrl, new { @class = "control-label col-sm-2" })<div class="col-sm-10"><img id="imgpreview" class="thumbnail" src="@Model.CommonModel.DefaultPicUrl" />@Html.HiddenFor(model => model.CommonModel.DefaultPicUrl)<a id="btn_picselect" class="easyui-linkbutton">选择…</a>@Html.ValidationMessageFor(model => model.CommonModel.DefaultPicUrl)</div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><input type="submit" value="保存" class="btn btn-default" /></div></div></div>
}

开始做后台接受代码,在ArticleController中添加如下代码。

[HttpPost][ValidateInput(false)][ValidateAntiForgeryToken]public ActionResult Edit(){int _id = int.Parse(ControllerContext.RouteData.GetRequiredString("id"));var article = articleService.Find(_id);TryUpdateModel(article, new string[] { "Author", "Source", "Intro", "Content" });TryUpdateModel(article.CommonModel, "CommonModel", new string[] { "CategoryID", "Title", "DefaultPicUrl" });if(ModelState.IsValid){if (articleService.Update(article)){//附件处理InterfaceAttachmentService _attachmentService = new AttachmentService();var _attachments = _attachmentService.FindList(article.CommonModel.ModelID, User.Identity.Name, string.Empty,true).ToList();foreach (var _att in _attachments){var _filePath = Url.Content(_att.FileParth);if ((article.CommonModel.DefaultPicUrl != null && article.CommonModel.DefaultPicUrl.IndexOf(_filePath) >= 0) || article.Content.IndexOf(_filePath) > 0){_att.ModelID = article.ModelID;_attachmentService.Update(_att);}else{System.IO.File.Delete(Server.MapPath(_att.FileParth));_attachmentService.Delete(_att);}}return View("EditSucess", article);}}return View(article);}

详细讲解一下吧:

1、[ValidateInput(false)] 表示不验证输入内容。因为文章内容包含html代码,防止提交失败。

2、[ValidateAntiForgeryToken]是为了防止伪造跨站请求的,也就说只有本真的请求才能通过。

image

见图中的红线部分,在试图中构造验证字符串,然后再后台验证。

3、public ActionResult Edit()。看这个方法没有接收任何数据,我们再方法中使用TryUpdateModel更新模型。因为不能完全相信用户,比如如果用户构造一个CateggoryID过来,就会把文章发布到其他栏目去。

image

这个是在路由中获取id参数

image

再看这两行,略有不同

第一行直接更新article模型。第一个参数是要更新的模型,第二个参数是更新的字段。

第二行略有不同,增加了一个前缀参数,我们看视图生成的代码 @Html.TextBoxFor(model => model.CommonModel.Title 是带有前缀CommonModel的。所以这里必须使用前缀来更新视图。

三、修改文章列表

写完文章后,就要更改文章列表代码用来删除和修改文章。

打开List视图,修改部分由2处。

1、js脚本部分

<script type="text/javascript">$("#article_list").datagrid({loadMsg: '加载中……',pagination:true,url: '@Url.Action("JsonList","Article")',columns: [[{ field: 'ModelID', title: 'ID', checkbox: true },{ field: 'CategoryName', title: '栏目'},{ field: 'Title', title: '标题'},{ field: 'Inputer', title: '录入', align: 'right' },{ field: 'Hits', title: '点击', align: 'right' },{ field: 'ReleaseDate', title: '发布日期', align: 'right', formatter: function (value, row, index) { return jsonDateFormat(value); } },{ field: 'StatusString', title: '状态', width: 100, align: 'right' }]],toolbar: '#toolbar',idField: 'ModelID',onDblClickRow: function (rowIndex, rowData) { window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rowData.ModelID, "icon-page"); }});//查找$("#btn_search").click(function () {$("#article_list").datagrid('load', {title: $("#textbox_title").val(),input: $("#textbox_inputer").val(),category: $("#combo_category").combotree('getValue'),fromDate: $("#datebox_fromdate").datebox('getValue'),toDate: $("#datebox_todate").datebox('getValue')});});//修改事件function eidt() {var rows = $("#article_list").datagrid("getSelections");if (!rows || rows.length < 1) {$.messager.alert("提示", "请选择要修改的行!");return;}else if (rows.length != 1) {$.messager.alert("提示", "仅能选择一行!");return;}else {window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rows[0].ModelID, "icon-page");}}//删除function del(){var rows = $("#article_list").datagrid("getSelections");if (!rows || rows.length < 1) {$.messager.alert("提示", "未选择任何行!");return;}else if (rows.length > 0) {$.messager.confirm("确认", "您确定要删除所选行吗?", function (r) {if (r) {$.messager.progress();$.each(rows, function (index, value) {$.ajax({type: "post",url: "@Url.Action("Delete", "Article")",data: { id: value.ModelID },async: false,success: function (data) {}});});$.messager.progress('close');//清除选择行rows.length = 0;$("#article_list").datagrid('reload');}});return;}}
</script>

增加了修改方法、删除方法,在datagrid里添加行双击进入修改视图的方法

onDblClickRow: function (rowIndex, rowData) { window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rowData.ModelID, "icon-page"); }

2、

image

四、我的文章列表

我的文章列表与全部文章类似,并简化掉了部分内容那个,更加简单,直接上代码了

Article控制器中添加

/// <summary>/// 文章列表Json【注意权限问题,普通人员是否可以访问?】/// </summary>/// <param name="title">标题</param>/// <param name="input">录入</param>/// <param name="category">栏目</param>/// <param name="fromDate">日期起</param>/// <param name="toDate">日期止</param>/// <param name="pageIndex">页码</param>/// <param name="pageSize">每页记录</param>/// <returns></returns>public ActionResult JsonList(string title, string input, Nullable<int> category, Nullable<DateTime> fromDate, Nullable<DateTime> toDate, int pageIndex = 1, int pageSize = 20){if (category == null) category = 0;int _total;var _rows = commonModelService.FindPageList(out _total, pageIndex, pageSize, "Article", title, (int)category, input, fromDate, toDate, 0).Select(cm => new Ninesky.Web.Models.CommonModelViewModel() { CategoryID = cm.CategoryID,CategoryName = cm.Category.Name,DefaultPicUrl = cm.DefaultPicUrl,Hits = cm.Hits,Inputer = cm.Inputer,Model = cm.Model,ModelID = cm.ModelID,ReleaseDate = cm.ReleaseDate,Status = cm.Status,Title = cm.Title });return Json(new { total = _total, rows = _rows.ToList() });}public ActionResult MyList(){return View();}/// <summary>/// 我的文章列表/// </summary>/// <param name="title"></param>/// <param name="fromDate"></param>/// <param name="toDate"></param>/// <param name="pageIndex"></param>/// <param name="pageSize"></param>/// <returns></returns>public ActionResult MyJsonList(string title, Nullable<DateTime> fromDate, Nullable<DateTime> toDate, int pageIndex = 1, int pageSize = 20){int _total;var _rows = commonModelService.FindPageList(out _total, pageIndex, pageSize, "Article", title, 0, string.Empty, fromDate, toDate, 0).Select(cm => new Ninesky.Web.Models.CommonModelViewModel(){CategoryID = cm.CategoryID,CategoryName = cm.Category.Name,DefaultPicUrl = cm.DefaultPicUrl,Hits = cm.Hits,Inputer = cm.Inputer,Model = cm.Model,ModelID = cm.ModelID,ReleaseDate = cm.ReleaseDate,Status = cm.Status,Title = cm.Title});return Json(new { total = _total, rows = _rows.ToList() }, JsonRequestBehavior.AllowGet);}

为MyList右键添加视图

<div id="toolbar"><div><a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-edit',plain:true" onclick="eidt()">修改</a><a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="del()">删除</a><a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true" onclick="$('#article_list').datagrid('reload');">刷新</a></div><div class="form-inline"><label>标题</label> <input id="textbox_title" class="input-easyui" style="width:280px" /><label>添加日期</label><input id="datebox_fromdate" type="datetime" class="easyui-datebox" style="width:120px" /> -<input id="datebox_todate" type="datetime" class="easyui-datebox" style="width:120px; " /><a href="#" id="btn_search" data-options="iconCls:'icon-search'" class="easyui-linkbutton">查询</a></div></div>
<table id="article_list"></table>
<script src="~/Scripts/Common.js"></script>
<script type="text/javascript">$("#article_list").datagrid({loadMsg: '加载中……',pagination:true,url: '@Url.Action("MyJsonList", "Article")',columns: [[{ field: 'ModelID', title: 'ID', checkbox: true },{ field: 'CategoryName', title: '栏目'},{ field: 'Title', title: '标题'},{ field: 'Inputer', title: '录入', align: 'right' },{ field: 'Hits', title: '点击', align: 'right' },{ field: 'ReleaseDate', title: '发布日期', align: 'right', formatter: function (value, row, index) { return jsonDateFormat(value); } },{ field: 'StatusString', title: '状态', width: 100, align: 'right' }]],toolbar: '#toolbar',idField: 'ModelID',onDblClickRow: function (rowIndex, rowData) { window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rowData.ModelID, "icon-page"); }});//查找
    $("#btn_search").click(function () {$("#article_list").datagrid('load', {title: $("#textbox_title").val(),fromDate: $("#datebox_fromdate").datebox('getValue'),toDate: $("#datebox_todate").datebox('getValue')});});//修改事件function eidt() {var rows = $("#article_list").datagrid("getSelections");if (!rows || rows.length < 1) {$.messager.alert("提示", "请选择要修改的行!");return;}else if (rows.length != 1) {$.messager.alert("提示", "仅能选择一行!");return;}else {window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rows[0].ModelID, "icon-page");}}//删除function del(){var rows = $("#article_list").datagrid("getSelections");if (!rows || rows.length < 1) {$.messager.alert("提示", "未选择任何行!");return;}else if (rows.length > 0) {$.messager.confirm("确认", "您确定要删除所选行吗?", function (r) {if (r) {$.messager.progress();$.each(rows, function (index, value) {$.ajax({type: "post",url: "@Url.Action("Delete", "Article")",data: { id: value.ModelID },async: false,success: function (data) {}});});$.messager.progress('close');//清除选择行
                    rows.length = 0;$("#article_list").datagrid('reload');}});return;}}
</script>

 

五、总结

要注意的是删除文章时删除的次序,修改文章时TryUpdateModel的使用。

到此Member部分文章这块结束。

补上代码 http://pan.baidu.com/s/1c05UNYS

登录地址:/Member/User/Login

账号mzwhj密码123456

转载于:https://www.cnblogs.com/mzwhj/p/3597457.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_766059.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

本来想接着上次把这篇写完的&#xff0c;没想到后来工作的一些事落下了&#xff0c;放假了赶紧补上。 目录&#xff1a; ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP.NET MVC5 网站开发实践(一) - 框架&#xff08;续&#xff09; 模型、数…

网站创建自定义百度地图

第一步&#xff1a;百度搜索“创建地图-百度地图生成器”或者直接点击链接&#xff1a;http://api.map.baidu.com/lbsapi/creatmap/&#xff0c;打开页面 如下图所示&#xff1a; 第二步&#xff1a;输入你要查找的地址名称&#xff0c;点击查找&#xff0c;如下图所示&#xf…

【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo...

【网站国际化必备】Asp.Net MVC 集成Paypal&#xff08;贝宝&#xff09;快速结账 支付接口 &#xff0c;附源码demo 原文:【网站国际化必备】Asp.Net MVC 集成Paypal&#xff08;贝宝&#xff09;快速结账 支付接口 &#xff0c;附源码demo开篇先给大家讲段历史故事&#xff0…

记录支付宝SDK网站支付的对接

说明&#xff1a;此方法仅用SDK的对接 没有使用官方提供的demo 官方SDK的下载地址&#xff1a;https://github.com/alipay/alipay-sdk-php-all 使用框架&#xff1a;thinkphp5.0.24 将支付宝sdk放入框架extend(第三方扩展库)\alipay文件中&#xff1b; 对接SDK的三步曲&#xf…

今天我发现了一个网站有很多的html5手机wap网站模板,在这里分享一下

手机wap静态网页模版仿中国新闻网微官网山东红十字会医院3g手机版网站模版html制作***3G静态wap网站模版html仿南通和美家***网站静态模版参考3g手机网站模版仿广州曙光***3g手机网页模版仿北京航空466医院手机WAP站点3G wap妇科医院网站模板仿北京艾丽斯妇科医院3G手机静态模版…

songtaste网站歌曲真实URL获取

个人挺喜欢songtaste网站的歌曲的&#xff0c;下载方法也层出不穷&#xff0c;可是作为程序员如果不知其中原理的方法真是羞愧。首先简单点的方法当然有google插件这样的嗅探器了&#xff0c;不过这种工具的原理还不是很了解。今天先总结一下songtaste网站部分歌曲的真实下载链…

单页面应用SEO 和 pushstate

2019独角兽企业重金招聘Python工程师标准>>> ----------------引子----------------- 单页应用的优点 跨平台开发&#xff0c;更好的用户体验&#xff0c;让用户在web感受natvie的速度和流畅&#xff1b;经典MVC开发模式&#xff0c;前后端各负其责。一套Server API…

117work 网站开发 21 简洁版侧边栏开发设置 ,附录代码

相对简单了&#xff01;就要快速的捋一遍基本概念&#xff0c;然后就可以正式进入开发行业的了&#xff01;实现梦想的行业&#xff01; 进军大公司的机会&#xff01; 快速提高开发技术&#xff01;&#xff01;&#xff01; 代码效果图 <!DOCTYPE html> <html lan…

浮动-网站开发 基础知识点

编程月度总结&#xff0c;周更新 还是基础太弱&#xff0c;基础弱是开发的弱点&#xff01;项目也更是很少&#xff01;只能一方面不断的复习基础&#xff0c;一方面写项目&#xff0c;增加项目才行&#xff01; <!DOCTYPE html> <html lang"en"> &l…

网站中最简单的盒子,写法

最简单的盒子&#xff0c;写法 效果图 &#xff0c;这是2个盒子的建立。 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> &l…

网站应用微信登录功能接口开发指南

2019独角兽企业重金招聘Python工程师标准>>> 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前&#xff0c;在微信开放平台注册开发者帐号&#xff0c;并拥有一个已审核通过的…

SSM新闻网站

0、demo链接 链接&#xff1a;https://pan.baidu.com/s/1m7yLJvPg_JTedK5Dg43JXQ 提取码&#xff1a;hmia 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 1、SSM概述 SSM框架&#xff0c;即Spring Spring MVC MyBatis的缩写 1.Spring简介 Spring是一个开源框架…

CSS鼠标滑过变化颜色的设置,网站设置(一看就懂)

效果: 本身颜色为蓝色,鼠标放上后变为红色。 代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><…

网站+小程序项目实战案例1 数据库与网站展示关系以及C#基础知识点2()

1 数据库 2 C# 3 vue 1 数据库的还没有创建,,,,,ask过了,先看后面的了。 数据库与网页展示的关系。 犹如面粉与面头的关系。 客户要的是馒头,可不是面粉哦! 您要干的活,就是把面粉经过几道工序,加工出来成馒头的活。 服务项目的数据库, 数据。 与网页展示效果。…

网站+小程序项目实战案例1 vue 知识点3(一看就懂)

#功能整理 首页 装修案例&#xff1a;办公室装修&#xff0c;酒店滨片类、教育机构类&#xff0c;餐饮类、诊所类&#xff0c;商铺类 服务项目&#xff1a;办公室装修&#xff0c;酒店滨片类、教育机构类&#xff0c;餐饮类、诊所类&#xff0c;商铺类 装修攻略&#xff1a;设…

成功回调_qq互联平台配置网站回调域避免出现“redirect uri is illegal(100010)”

qq互联平台配置网站回调域避免出现“redirect uri is illegal(100010)”&#xff0c;通过腾讯开放平台在线解码工具&#xff0c;解决qq互联平台配置网站回调域配置问题。大家在配置qq互联平台网站回调域的时候可能会出现的情况&#xff0c;切图&#xff1a;我通过搜索“在线解码…

Win7下用IIS发布网站

安装IIS控制面板->程序->程序和功能&#xff0c; 点击左侧的“打开或关闭Windows功能”把这几项都勾上吧&#xff0c;虽然有些不是必须的&#xff0c;多勾无碍。进入IIS管理器控制面板-> 系统和安全->管理工具->IIS管理器添加新网站在左侧栏中&#xff0c;右键“…

CentOS系统中基于Apache+php+mysql的许愿墙网站的搭建

1.首先&#xff0c;我们需要两台虚拟机&#xff08;CentOS7,Linux文本&#xff09;。 2.给两台虚拟机配置网络环境分别为桥接模式 CentOS7 ip为192.168.100.137、24&#xff0c;linux文本ip为192.168.100.237/24&#xff0c;然后各自配置yum源配置文件&#xff08;http://www.c…

python网站攻击脚本_python自动化脚本工具攻击触发技能

这点代码将会找到Outlook信箱中的附件&#xff0c;并把它们保存至 "C:\temp\OutlookAttachments"&#xff0c;它没有错误处理所以请小心使用 查找了一下资料&#xff0c;发现出现Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: …

为了打击网站被黑作弊行为,360搜索上线悟空算法2.0

我们在搜索浏览网页的时候&#xff0c;经常会出现正常网页跳转至含有色情&#xff0c;博彩等信息的恶意站点上去。这样严重影响到了用户的搜索体验&#xff0c;为了打击此类行为&#xff0c;360搜索正式上线了&#xff1a;“悟空算法2.0”网站被黑是一种较为常见的现象&#xf…