java代码传值 java传参的三种方式

jsp 怎么用java和jsp传值

1.JSP传值给Servlet

创新互联公司是一家专业提供榆中企业网站建设,专注与网站设计制作、成都网站制作、HTML5建站、小程序制作等业务。10年已为榆中众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

JSP传值给Servlet有几种形式:Form表单传值,url传值,其他方式传值

a、form表单传值:

JSP页面有:input type="radio" name="staffdepartment" value="1" id="department1" /,将department的id传到Sevlet中,在程序中如下:ServletRequest request;Stringstaffdepartment=request.getParameter("staffdepartment");可获取jsp传的department,但要获取id还要进行转化:int int_staffdepartment=Integer.parseInt(staffdepartment);

b、url传值

比如这里的 a标签的 href属性与 form标签的 action属性的值 "JspServlet?action=toServlet",在 servlet同样用 request.getParameter("action")获取;

c、Java代码传值

java片段代码,servlet只能接到 session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容。

Servlet传值给Jsp

具体实现如下,java代码:

String   a= "abccdefg "; 

request.setAttribute( "ValueA ",a); 

request.getRequestDispatcher( "网址/jsp页面 ").forward(request,response); 

jsp页面:

%

String   s   =(String)request.getAttribute( "ValueA ");

%

jsp页面就可以取出Servlet的值。

怎样java中传值给页面

从 servlet转到 jsp不外乎两种方法,重定向 和 url转发

1、重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在 servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url) 方法。注意这里的 url前不带斜线 /,如 response.sendRedirect(”test.jsp“)

2、url转发 ( Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而这里的 url前需要带斜线 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)

servlet使用RequestDispatcher到jsp页面

String url="/EShop.jsp";

ServletContext sc = getServletContext();

RequestDispatcher rd = sc.getRequestDispatcher(url);

rd.forward(req, res);

servlet重定向jsp,并将数据发送到别一个JSP中:

request.setAttubute("messages",aaa);

RequestDispatcher requestDispatcher=request.getRequestDispatcher("/jsp/testbean.jsp");

requestDispatcher.forward(request,response);

3.7、Servlet跳转

从JSP跳转到Servlet可以实现,通过表单提交或超链接可以做到,但是现在如果从一个Servlet跳转到JSP呢?

• HttpServletResponse对象,此对象可以完成跳转:public void sendRedirect();

JumpServlet.java:

package org.lxh.demo ;

import javax.servlet.* ;

import javax.servlet.http.* ;

import java.io.* ;

public class JumpServlet extends HttpServlet{

public void init() throws ServletException{

}

public void doGet(HttpServletRequest req,HttpServletResponse resp)

throws ServletException,java.io.IOException{

resp.sendRedirect("jump.jsp") ;

}

public void doPost(HttpServletRequest req,HttpServletResponse resp)

throws ServletException,java.io.IOException{

this.doGet(req,resp) ;

}

public void destroy(){

}

};

web.xml:

servlet

servlet-namejump/servlet-name

servlet-classorg.lxh.demo.JumpServlet/servlet-class

/servlet

servlet-mapping

servlet-namejump/servlet-name

url-pattern/jump/url-pattern

/servlet-mapping

以上实现了跳转的功能,但是跳转之后,发现地址栏已经改变了,所以此跳转称为客户端跳转。如果此时假设一个Servlet要向JSP中传递属性,那么应该使用session范围。

JumpServlet.java:

public void doGet(HttpServletRequest req,HttpServletResponse resp)

throws ServletException,java.io.IOException{

request.getSession().setAttribute("name","hello") ;

resp.sendRedirect("jump.jsp") ;

}

jump.jsp:

h1%=session.getAttribute("name")%/h1

此时,发现可以通过session属性范围传递内容,但是如果现在传递的内容很多,而程序中使用session范围的话则肯定会带来额外的性能降低,但是此时,这些值只使用一次显示,那肯定没有必要使用session对象,最好使用request范围。如果request属性范围也有一个限制,必须是服务器端跳转,在JSP中使用jsp:forward语句完成,但是在servlet中呢?就只能使用RequestDsipatcher接口完成,实际上jsp:forward语句也是使用包装了此种应用,既然RequestDispatcher是一个接口,所以必须通过其他方式实例化,通过request对象完成。

JumpServlet.java:

public void doGet(HttpServletRequest req,HttpServletResponse resp)

throws ServletException,java.io.IOException{

req.setAttribute("name","hello") ;

// 准备跳转到此页面

RequestDispatcher rd = req.getRequestDispatcher("jump.jsp") ;

// 把所有的请求向下继续传递

rd.forward(req,resp) ;

}

注意:

当需要传递request属性范围的时候才使用服务器端跳转。如果不需要传递,则可以选择任意的跳转方式。

但是一般情况下都使用RequestDispatcher进行跳转,而且一定要记住的时候,跳转之后页面地址不会有任何的变化。

Java类如何传值

public class Base {

private String sdate;

public String getSdate() {

return sdate;

}

public void setSdate(String sdate) {

this.sdate = sdate;

}

public Base(String sdate) {

this.sdate = sdate;

}

}

class A extends Base{

private String sdate;

public A(String sdate){

super(sdate);

}

}

//这种方式可以,但是仅限于父子类之间,如果想在实例还有造出来之前,使用实例内的内容,那是不可能的


网站栏目:java代码传值 java传参的三种方式
本文网址:http://csdahua.cn/article/ddeishj.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流