java怎么从后天往前台传参_struts2前台与后台参数的交互,jsp到java,java到jsp,java到javascript...

+2016-05-13+

从request中取值和从session中取值的方式是不同的,这一点非常重要,当session不失效

(当浏览器没有关闭,这个页面连续在结果服务器之间跳转并不会造成session的id的变化,

ActionContext ctx = ActionContext.getContext();

HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);

HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

System.out.println(request.getSession().getId());

),

但是,如果值是存在session中,但是从request中取是不能成功的

总结来说,在放参数的时候,request.setAttribute("code", "456");是request级别的,ctx.getSession().put("code", "789");是session级别的,

在取参数的时候,几个页面跳转过后,request.getAttribute("code");的值会失效,request.getParameter("forever");也会失效,但是ctx.getSession().get("code");不会失效

但是系统会先从request(page)中取值,然后是session中取值,取值方式一定要正确。

request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。

一般是string型用request.getParameter

对象的引用用request.getAttribute

当然啦,String也是对象。

+2016-05-13+

1、jsp页面数据提交给后台,后台获取并打印

前台,可以使用form表单提交,为了便于说明问题,以get方式提交数据。

比如访问的路径为:http://127.0.0.1:8080/test/test/test.do?forever=1

后台获取的方式可以分为两类,这里举例的变量为forever

(1)后台提供全局变量申明:String forever;并且提供该变量的getter和setter方法

String forever;

public String getForever() {

return forever;

}

public void setForever(String forever) {

this.forever = forever;

}

这种情况下,可以直接获取参数forever并且在后面的控制台打印。

比如上面的链接访问的链接会访问下面的方法,那么这个forever参数是可以直接获取的

public String test1(){

System.out.println("获取到这个参数了="+forever);

}

而且,实验证明使用下面的语句也可以获取到forever的值

ActionContext ctx = ActionContext.getContext();

HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);

HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);     //这一句是多余的,在需要response的时候才是有必要的

request.getParameter("forever");

request.getAttribute("forever");

这样,在存在getter和setter方法的情况下,可以使用三种方式获取前台传递给后天的参数的值,(!!需要注意的是,前台提交的参数参数名字的大小写必须和后台的是一直的)

public String test1(){

ActionContext ctx = ActionContext.getContext();

HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);

HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);

System.out.println(forever);

System.out.println(request.getParameter("forever"));

System.out.println(request.getAttribute("forever"));

}

(2)后台声明变量forever或者不声明,在声明这个变量之后不提供setter和getter方法

在访问路径依旧为http://127.0.0.1:8080/test/test/test.do?forever=1的情况下,只有下面的语句获取参数值成功

public String test1(){

ActionContext ctx = ActionContext.getContext();

HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);

HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);

System.out.println(request.getParameter("forever"));

}

2、前台传递参数给JSP页面

(1)存在getter和setter方法

比如java中,

String code;

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

然后还是那个地址,但是这个地址现在不是获取参数,而是赋值给code

public String test1(){

code="123";

return "tologinform";

}

跳转到前台的jsp页面

这个标签内部直接

${code}

实验证明,使用下面的方式也可以达到赋值的作用,前台也是可以获取参数的

request.setAttribute("code", "456");

ctx.getSession().put("code", "789");

总结来说,setter方法、request.setAttribute("code", "456");是request级别的,ctx.getSession().put("code", "789");是session级别的,前者会被优先选择

(2)不存在getter和setter方法

request.setAttribute("code", "456");

ctx.getSession().put("code", "789");

总结来说,request.setAttribute("code", "456");是request级别的,ctx.getSession().put("code", "789");是session级别的,前者会被优先选择

而且,如果要用一个对象表示ctx.getSession(),应该如下

ActionContext context=ActionContext.getContext();

Map session=context.getSession();

session.put("username", "Liming");

3、后台到js

放置参数的方式和上面列举的方法是一致的-双引号或单引号

alert("${code}");

if("${code}"!=""){

alert("${code}");

}

+2016年04月26日+

//js可以直接识别字符串中的${代码},而且可以是一个长串的识别

$("#orderform"+index).attr("action","orderGoToPay.do?sumPrmiums="+$("#sumPrmium2").val()+"&orderNo="+$("#orderNo2").val());

$("#orderform"+index).attr("action","orderGoToPay.do?sumPrmiums=${dateMap.sumpremium}&orderNo=${dateMap.orderno}");

+2016年05月25日+

js中获取json格式的串,需要使用单引号

html页面隐藏域获取json格式的字符串,需要使用单引号

从后台向前台传递参数,具有set和get方法,连续跳转多个本服务器的chain再到某个页面,那个页面依旧可以获取这个参数值${name1}

+2016年06月01日 儿童节快乐+

后台USER 具有username

把USER实体类对象放置到session中

前提是username具备getter和setter方法

ActionContext ctx=ActionContext.getContext();

HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

HttpSession session = request.getSession();

System.out.println(session.getId());

User u=new User();

u.setUsername("李明");

session.setAttribute("u", u);

下面再jsp页面

session.u.username:${session.u.username}

u.username:${u.username}

username:${username}

当USER也有getter和setter方法,则三个都可以直接获取到username

当USER没有getter和setter方法,则${u.username} 可以获取值,${session.u.username} 首次没有值,刷新页面则开始有值,${username}永远没有值

+2016年06月01日+

对于没有getter和setter的一般字符串防止到session中也体现这个规律

session.setAttribute("a", "小红");

jsp页面

session.a:${session.a}

a:${a}

${a} 永远有值,但是${session.a} 首次无值,只有刷新页面才有值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值