Javaweb的七大传参方式和以及各自特点

学习jsp一段时间,觉得还是需要把自己学习一些东西整理了一下,第一次发东西,还请各位多多支持

1.表单提交

html自带的from方法,简单易懂,便于操作,依靠于<from>标签中的type="submit"进行表单传输,或者根据js进行控制提交表单。其中由method属性决定以post或者get方式进行提交。

jsp代码:

1 <form id="test" action="testservlet" method="post" name="test_form">
2     账号:<input type="text" name="user_name" id="user"><p>
3     密码:<input type="password" name="user_password" id="password"><p>
4     <input type="submit" value="提交">
5 </form>

java代码(根据name属性获取参数):

1 String user = request.getParmeter("user_name");2 String user = request.getParmeter("user_password");

2.URL传参(超链接请求)

这种传参方式,一般比较单一,所选取的值都是现有或者已经定义的,并且只能用get提交方式去发送请求。所以大多数情况下,超链接只用来作为跳转接口,而一般不会被用作传递参数的功能。不过,当JS来进行动态处理时,URL的方式还是十分灵活的,这里就不一一举例了。

1 <a href = "test.jsp?user_name=aaa&user_password=bbb"><!--jsp代码-->
1 String user = request.getParameter("user_name");
2 String pass = request.getParameter("user_password");//java取值代码

3.Javabean传参

JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。

javabean使用有如此好处

1.提高代码的可复用性:对于通用的事务处理逻辑,数据库操作等都可以封装在JavaBean中,通过调用JavaBean的属性和方法可快速进行程序设计。
2.程序易于开发维护:实现逻辑的封装,使事务处理和显示互不干扰。
3.支持分布式运用:多用JavaBean,尽量减少java代码大量出现在显示界面。
4.可以便捷地传递数据。

以下用代码举个小栗子:

javabean代码:

 1 package model;
 2
 3 public class User{
 4     private String user_name;
 5     private String user_password;
 6     public String getUser_name() {
 7         return user_name;
 8     }
 9     public void setUser_name(String user_name) {
10         this.user_name = user_name;
11     }
12     public String getUser_password() {
13         return user_password;
14     }
15     public void setUser_password(String user_password) {
16         this.user_password = user_password;
17     }
18 }

传递参数的页面:

1 <jsp:useBean id="user" class="model.User" scope="session" />
2  <%
3    user.setUser_name("小明");
4    user.setUser_password("******");
5  %>
6 <a href="test.jsp">提交</a>

接收页面:

1 <jsp:useBean id="user" class="entity.User" scope="session"></jsp:useBean>
2 <!--下面的动作方法当然可以获取到值-->
3 姓名:<jsp:getProperty name="user" property="user_name"/>
4 密码:<jsp:getProperty name="user" property="user_password"/>
5 <!--下面的普通方法当然也可以-->
6 姓名:<%=user.getUser_name()%><br>
7 密码:<%=user.getUser_password()%><br>

4.session对象传参

Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话,Session 对象最常见的一个用法就是存储用户的首选项。

简单来说,就是服务器在确定每一个用户过后都会存放用户相关信息在服务器端,这个被存放的值的集合就是session对象。

传参界面与接收的界面:

 1 <%
 2 //传参界面
 3 session.setAttribute("user_name", "小明");
 4 session.setAttribute("user_password", "******");
 5 %> 6 <a href="test.jsp">提交</a>
 7 <%
 8 //接收界面
 9 out.println("姓名:"+session.getAttribute("username"));
10 out.println("密码:"+session.getAttribute("user_password"));
11 %>

5.cookie

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务 器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。Java中把Cookie封装成了javax.servlet.http.Cookie类,每个Cookie都是该Cookie类的对象,服务器通过操作Cookie类对象对客户端Cookie进行操作。

java代码

1 Cookie cookie = new Cookie("username","password");// 新建Cookie
2 cookie.setMaxAge(3600);       // 设置生命周期为3600秒
3 response.addCookie(cookie); // 输出到客户端

6.application全局变量

application对象代表JSP所属的WEB应用本身,可用于JSP页面,或者Servlet之间交换信息。常用的方法有getAttribute(String attName), setAttribute(String attName,String attValue)getInitParameter(String Param)等。

服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。

但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

传参界面与接收的界面:

 1  <%
 2  //传参界面
 3  application.setAttribute("user_name", "小明");
 4  application.setAttribute("user_password", "******");
 5  %>
 6  <a href="test.jsp">提交</a> 7  <%
 8  //接收界面
 9  out.println("姓名:"+application.getAttribute("username"));
10  out.println("密码:"+application.getAttribute("user_password"));
11  %>

7.request对象

request对象是当客户端向服务器端发送请求时,服务器为本次请求创建的,并在调用Servlet的service方法时,将该对象传递给service方法。

Request对象中封装了客户端发送过来的所有的请求数据。只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头、请求方法、请求参数、客户端IP,客户端浏览器等等信息。

当然,它进行正常传参时是和session与application类似的,毕竟同属于四大范围域。

 1  <%
 2  //传参界面
 3  request.setAttribute("user_name", "小明");
 4  request.setAttribute("user_password", "******");
 5  %>
 6  <a href="test.jsp">提交</a> 7  <%
 8  //接收界面
 9  out.println("姓名:"+request.getAttribute("username"));
10  out.println("密码:"+request.getAttribute("user_password"));
11  %>

8.jsp动作传参

1.jsp:forward动作做页面跳转时传递参数。

2.jsp:param它可以实现主页面向包含页面传递参数。

传参界面:

1 <jsp:forward page="test.jsp">
2       <jsp:param name="name" value="小明"  />
3       <jsp:param name="password" value="******" />
4 </jsp:forward>

接收界面

1 <%
2 out.println("姓名:" + request.getParameter("user_name"));
3 out.println("密码:" + request.getParameter("user_password"));
4 %>

这就是八种常见传参方式的小例子以及我个人的理解,其中除了cookie作为存储在客户端文本的传参方式(减轻服务器端压力,传输信息量大,安全性差),其他都是服务端的传参模式(信息量小,安全好),谢谢大家支持。

原文地址:https://www.cnblogs.com/deandre-tou/p/8605566.html

时间: 2024-10-21 23:30:37

Javaweb的七大传参方式和以及各自特点的相关文章

java 传参方式--值传递还是引用传递

java 传参方式--值传递还是引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递.写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引用传递参数,以避免因依赖“按引用传递”这一行为而导致的常见编程错误. 对此节选的某些反馈意见认为,我把这一问题搞糊涂了,或者将它完全搞错了.许多不同意我的读者用 C++ 语言作为例子.因此,在此栏目中我将使用 C++ 和 Java 应用程序进一步阐明一些事实. 要点 读完所有的评论以后,问题终于明白了

vue请求中 post get传参方式是不同的哦

我在学习vue,项目中post请求,get请求都用到了,我发现传参方式是不一样的. post请求的例子: checkin (){ this.$http.post('my url',{ mobilePhone:this.phone, password:this.password },{ emulateJSON: true } ).then(function(res){ this.$root.userid=res.data.userid; console.log(this.$root.userid)

Web API中的传参方式

在Restful风格的WebApi的里面,API服务的增删改查,分别对应着Http Method的Get / Post / Delete /Put,下面简单总结了Get / Post /Delete /Put的传参方式 一.Get传参 get设计成传输小数据,而且最好是不修改服务器的数据,所以浏览器一般都在地址栏里面可以看到,数据放在url的QueryString中. (一)简单类型 $(function () { $.ajax({ type: 'get', url:'http://localh

react中的传参方式

react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a name='a' age={16}/>,app) 在渲染的时候,直接给挂载的组件传参. 2,父子传参 父子传参可以用props和ref两种方式,1,props方式传参,父组件通过改变自己的参数并且通过props将状态传递给子组件,并在子组件中显示.2,通过ref传参,这种方式是通过子组件自己的方法改变自己的

SpringMVC的五种请求传参方式

1.传统传参方式 方法参数中使用request,通过request.getParameter("参数名"),再封装到bean中 @RequestMapping("/test01") public ModelAndView test01(HttpServletRequest request){ String username = request.getParameter("username"); String password = request.

mock和axios常见的传参方式

第一次接手项目,传参方式还有些吃力,因此做一下总结. 首先我们需要会看swagger中的接口.里面写了某个接口需要接收什么样的值,前端怎么传递这个值 在mock中的传参方式: mock中传参的方式有两个参数,一个是path对象,一个是data对象. path想当于拼接在url地址上的参数, data是url后面的参数. 1.get请求 如果url后面有opts的参数,则说明他需要传递参数.要不就不用传递了,直接写个url就好了,不用拼接参数.(请看下图) 图一是接口 图二是调用了这个接口. 这个

struts2 页面向Action传参方式

1.基本属性注入 我们可以直接将表单数据项传递给Action,而Action只需要提供基本的属性来接收参数即可,这种传参方式称为基本属性注入.例如 jsp页面: <s:form method="post" action="/Login"> <s:textfield name="username" label="用户名"/> <s:password name="password"

前后台交互之传参方式

前台向后台传参,一般有如下几种方式: 一.URL方式传参 使用这种方式时,参数接在url后面,用?分隔,如果有多个参数,各参数间用&连接.get方式请求时可以使用URL方式传参. 巴特URL传参在应用时也有缺陷: 1.参数长度限制: (1)IIS 7 对 Query String 有长度限制:默认:2048 (2) IE浏览器对URL的长度现限制为2048字节(自己测试最多为2047字节). (3)360极速浏览器对URL的长度限制为2118字节. (4)Firefox(Browser)对URL

夺命雷公狗—angularjs—22—bind改指向和传参方式

在angularjs中的传参的jquery的方式是极度相似的噢,而且还可以通过bind来改变指向 <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/angular.min.js&qu