jsp传参问题总结

    每次写东西都在纠结怎么传递参数,现在要把自己研究出来传递参数的方法总结一下分享给大家

1.如果用模型驱动----ModelDriven(我的例子是基于struts下)话,对页面的数据接收比较简单。

    在使用模型驱动的时候,首先要注意页面上的form表单属性的name值要和类里面的属性值的命名要一样,这样它才能自动赋值。

2.是使用request来进行传参的

3.利用a标签传参

4.利用s标签来显示参数

下面是我写的小例子来提供给大家理解:

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>提交数据页面</title>
</head>
<body>
<s:form action="outname" method="post" namespace="/">
<input type="text" name="name">
<input type="submit" value="提交">
</s:form>
<a href="outname.action?myname=123">利用a标签传参</a>
</body>

</html>


struts.xml

package domain;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


public class userAction extends ActionSupport implements ModelDriven<user>,ServletRequestAware{
private user us=new user();//注意这里一定要实例化哦!!
ServletRequest request;
//从页面接受参数方法1
@Override
public user getModel() {
// TODO Auto-generated method stub
return us;
}


//向页面传递参数方法1
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
@Override
public String execute() throws Exception {
System.out.println(us.getName());
//向页面传递参数方法1
request.setAttribute("us", us);



//向页面传递参数方法2  利用了session 不清空就一直存在  但是session可以传递对象
ActionContext.getContext().getSession().put("us2", us);
//向页面传递参数方法2要需要清空变量的方法
//ActionContext.getContext().getSession().remove("existManager");


//从页面接收参数方法2接收a标签传递过来的参数
String myname=request.getParameter("myname");
System.out.println(myname);
return SUCCESS;
}


}


user.java

package domain;


public class user {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}


userAction.java

package domain;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;


public class userAction extends ActionSupport implements ModelDriven<user>,ServletRequestAware{
private user us=new user();//注意这里一定要实例化哦!!
ServletRequest request;
//从页面接受参数方法1
@Override
public user getModel() {
// TODO Auto-generated method stub
return us;
}



//向页面传递参数方法1
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
@Override
public String execute() throws Exception {
System.out.println(us.getName());
//向页面传递参数方法1
request.setAttribute("us", us);



//向页面传递参数方法2  利用了session 不清空就一直存在
ActionContext.getContext().getSession().put("us2", us);
//向页面传递参数方法2要需要清空变量的方法
//ActionContext.getContext().getSession().remove("existManager");


//从页面接收参数方法2接收a标签传递过来的参数
String myname=request.getParameter("myname");
System.out.println(myname);
return SUCCESS;
}


}


success.java

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示参数</title>
</head>
<body>
<h3>姓名:${requestScope.us.getName() }</h3>
页面显示用了s标签的方法:<br>
<h3>姓名:<s:property value="#session.us2.name"/></h3>
<a href=""></a>
</body>
</html>

因为最近在学习struts2,所以例子是用struts2来写的。

以上是我最近的学习整理的,总共记录了两种从页面获取参数的,和两种将参数传递到页面的方法。希望对大家能有所帮助吧~~


关于session的使用还可以参考一下:

https://www.cnblogs.com/xdp-gacl/p/3855702.html









猜你喜欢

转载自blog.csdn.net/qq_36856047/article/details/80585625