Controller类常用内置对象学习
一、分类
1、Request 请求
2、Response 响应
3、Session 会话
4、Cookie 客户端数据
5、Application 当前网站数据
6、Server 服务器对象
二、HTTP请求的几种方式
HTTP请求时客户端与服务器端之间的通信方式 常用的分以下几种
1、GET请求:获取特定资源或数据,并将其作为响应返回给客户端。GET请求一般用于数据查询 操作,参数被追加在URL中,可以在浏览器直接输入网址进行访问。由于GET请求只是读取数据并不对数据造成修改,因此在开发中也可用于缓存和速度优化等操作。
2、POST 请求:向指定资源提交数据(例如提交表单、上传文件等),并根据服务端返回的状态码处理响应的结果。POST请求中的请求参数以请求体的形式传递,并且没有长度限制。
3、PUT 请求:更新指定资源的内容。PUT方法需要客户端提供要更新的完整资源信息,而不是仅仅修改某个字段或属性。在RESTful规范中,PUT请求常用于创建或替换资源操作。
4、DELETE 请求:删除指定资源。DELETE请求可以用来删除资源或者指定的子资源。
5、PATCH 请求:类似于PUT请求,但是只会对指定资源进行部分修改。PATCH请求适合用在只需要更新少数字段的情况下,可以减少网络传输量。
GET请求表单直接在URL地址上
POST请求是通过表单方式 从客户端传给服务器端的
相对与来说POST请求更加安全
三、Controller常用内置对象详解
1、Request 请求
Request (客户端)页面上的数据请求发送给(后端代码)服务器端
- Request.QueryString["Name"] Get请求! 在网址后面加 ?Name=123&Age=456
- Request.Form["loginname"] Post请求! 获取表单内容 表单name=loginname
- Request.MapPath 相对路径转为绝对路径
- Request.Files["file"] Post请求的文件 文件上传
1)、 POST请求
HTML代码
<form action="/Home/PostData" method="post">
<input type="text" name="loginname" value="" />
<button>提交</button>
</form>
Controller方法代码
public ActionResult PostData() { //Request.Form //Post请求 Post请求使用表单的方式不在链接网址上显示 相对安全一些 return Content($"Post提交的:{Request.Form["loginname"]}"); }
页面显示
点击提交后将 表单内容123 通过POST方式提交到 Controller->Post方法里显示
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
2)、GET请求
Controller方法代码
public ActionResult Index() { return Content($"Get提交的:{Request.QueryString["Name"]}-{Request.QueryString["Age"]}"); }
页面显示
------------------------------------------------------------------------------------------------------------------------------
3)、POST请求 文件形式
HTML
<form action="/Home/FileData" method="post" enctype="multipart/form-data">
<input type="file" name="file" value="" />
<button>提交</button>
</form>
------------------------------------------------------------------------------------------------------------------------------
Controller方法代码
Request.Files["file"] file与之表单对应的name名字一致
SaveAS是将客户端提交的页面进行保存
Request.MapPath 是将相对路径转换为绝对路径
public ActionResult FileData()
{
//Request.File
//Post请求 Post请求使用表单的方式不在链接网址上显示 相对安全一些
Request.Files["file"].SaveAs(Request.MapPath("~/Files/" + Request.Files["file"].FileName));
return Content($"ok");
}
------------------------------------------------------------------------------------------------------------------------------
页面显示
------------------------------------------------------------------------------------------------------------------------------
2、Response 响应
Response 服务器端(后端) 发送传输给 (客户端)页面上的数据
- Response.Write("Hello World!"); 向客户端输出文字内容
- Response.Redirect(url: "http://www.baidu.com"); 重定向 跳转到另一个页面
- Response.Headers 获取响应头 服务器往页面发送的响应头
1)、显示数据到界面
public ActionResult ResponseData()
{
//2、Response 响应
//服务器端(后端) 发送传输给 (客户端)页面上的数据
Response.Write("Hello World!"); //向客户端输出文字内容
// Response.Redirect(url: "http://www.baidu.com"); 重定向 跳转到另一个页面
// Response.Headers 获取响应头 服务器往页面发送的响应头
return Content("");
}
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
2)、通过Response向页面Header传输数据
public ActionResult ResponseHeader()
{
Response.Headers["hello"] = "world";
Response.Headers["token"] = "123";
return Content(Response.Headers["token"]);
}
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
3、Session 会话
- 数据保存在服务器中 存储少量重要信息 比如登录的账号 这样就能从Session中读取登录信息
- 用户请求网站时开始一次Session 请求20分钟内不做任何操作就结束了
- 20分钟内当前用户打开的其他页面都可以获取 Session
- 如果进行操作 点了个按钮或a链接 Session重新计时
- 用户的存储数据空间 每个人都是独立的
1)、将表单内容保存到Session里
<form action="/Home/SessionData" method="post">
<input type="text" name="user" value="" />
<button>提交</button>
</form>
------------------------------------------------------------------------------------------------------------------------------
public ActionResult SessionData()
{
//Session是一个键值对 Session["user"]是Key Request.Form["user"]是Value
//Session.Clear(); 清空 销毁
Session["user"] = Request.Form["user"];
return Content("会话中的数据是:" + Session["user"]);
}
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
2)、查询Session
public ActionResult GetSession()
{
return Content("GetSession是:" + Session["user"]);
}
------------------------------------------------------------------------------------------------------------------------------
Session每个用户都是独立的 其他用户查询不到
------------------------------------------------------------------------------------------------------------------------------
3)、清除Session
public ActionResult ClearSession()
{
Session.Clear();
return Content("GetSession是:" + Session["user"]);
}
------------------------------------------------------------------------------------------------------------------------------
4、Cookie 客户端数据
Cookie 客户端保存的数据 下面是Cookie使用过程和设置
Expires = DateTime.Now.AddDays(7) 类似其他页面设置7天免登录
Expires = DateTime.Now.AddDays(-1) 清除Cookie
public ActionResult CookieSave()
{
//Cookie 客户端数据
//Cookie有个时效性 当发送时就失效了 可以设计cookie保存时间
//利用Response 从服务器端向客户端cookie传送一个数据
Response.Cookies.Add(new HttpCookie("token")
{
Value="1121这是服务器传给客户端的数据",
Expires = DateTime.Now.AddDays(7) //七天免登录
});
return Content("OK");
}
public ActionResult CookieGet()
{
return Content("Cookie:"+Request.Cookies["token"].Value);
}
public ActionResult CookieClear()
{
//清除cookie 用过期的方式
Response.Cookies.Add(new HttpCookie("token")
{
Expires = DateTime.Now.AddDays(-1) //七天免登录
});
return Content("OK");
}
------------------------------------------------------------------------------------------------------------------------------
5、Application 当前网站对象
Application 保存当前网站的数据 是网站通用的 所有人都可访问
public ActionResult ApplicationData()
{
//Application 和Session 都是在服务器端
//Session时独立的 Application是整个网站共享的
HttpContext.Application["user"] = "123";
return Content("OK");
}
public ActionResult GetApplicationData()
{
return Content("Application的数据是:" + HttpContext.Application["user"].ToString());
}
------------------------------------------------------------------------------------------------------------------------------
6、Server
Server 包含一些服务器常用方法 里面有一些转换工具方法
public ActionResult ServerDemo()
{
//转发 路径不变 页面发生了改变
//重定向 会把路径也改变
// Server.MapPath 虚拟路径转物理路径
//其他都是转码用的方法
Server.Transfer("~/HtmlPage1.html"); //转发 必须是当前网站内的网页才可转发
return Content("");
}
------------------------------------------------------------------------------------------------------------------------------
1)、Server.Tranfer 转发
- 与Response.Redirect 的重定向不同
- 转发只能跳转当前网站的其他页面 URL路径不变
- 重定向可以跳转任何的页面 URL会改变
------------------------------------------------------------------------------------------------------------------------------
总结
上述几个是在 Controller类里的一些常用的内置对象
Controller类是派生于ControllerBase