`
ancient_wind
  • 浏览: 40142 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

jsp中的脚本和传值问题(同struts2)

    博客分类:
  • Web
 
阅读更多

一、一些概念:

 

1)jsp脚本:有的地方也叫java脚本,指用<%%>括起来的jsp页面中的java脚本。所有能在java程序中执行的代码,都可以通过jsp脚本执行。

(2)jsp声明:用<%!声明部分%>形式声明的变量和方法。可以直接用在jsp脚本中。

(3)jsp输出表达式:用<%=表达式%>输出表达式的值,效果与jsp脚本中的out.println相同。表达式后面不能有分号。

(4)javascript:页面中<script></script>之间的代码,简称js。js插入的位置不同,执行效果也不同。放在<head>中的js调用时才执行,而放在<body>部分的在网页读到这部分时就会执行。也可以像添加外部CSS一样添加外部javaScript脚本文件,其后缀通常为.js。例如:

<head>

         <script src="example.js"></script>

</head>

 

二、jsp脚本、jsp声明、jsp输出表达式之间

 

jsp声明中声明的变量和方法对应于Servlet中的成员变量和方法(可以从tomcat的work\Catalina\localhost目录下找到转换成的类)。可以在jsp脚本和jsp输出表达式中直接使用。

jsp脚本中定义的变量也可以在jsp输出表达式中使用。例如:

<!-- 下面是JSP声明部分 -->
<%!
public int count;
public String info()
{ return "hello";}
%>

<%
Integer i=10;

out.println(count++);
%>
<%
out.println(info());
%>

<%=count++%>

<%=info()%>

<%=i%>

<%=request.getAttribute("attrName") %> 也可以用 ${param.attrName}

<%=session.getAttribute("attrName") %> 也可以用 ${attrName}

 

 

 

三、jsp脚本同struts2 action之间

 

jsp脚本要访问struts2 action传过来的变量,要用到ValueStack。例如:

 <%
    ValueStack vs = (ValueStack) request.getAttribute("struts.valueStack");
    User user=(User)vs.findValue("user");  

    String name=vs.findValue("name");  

 %>

其中,user和name是action中定义的成员变量,并有对应的getter和setter方法。

(貌似也可以直接用request访问action中定义的成员变量,如:<% String name=request.getAttribute("name")%>)

 

 

四、 jsp标签、struts2标签获取struts2 action的值

 

struts2 action要访问jsp标签、struts2标签的值,需要有和标签同名的变量,并有对应的getter和setter方法,这是struts2的传值机制。当然,struts2 action传值给result中转向的jsp页面中的jsp标签、struts2标签时,也使用同名机制。注意,值的传递是单次的,也就是说,如果jsp1->action1->jsp2,jsp1只能传值给action1。

 jsp标签、struts2标签通过页面中的form或s:form将值传递给action,action通过setter方法或直接给与标签同名的action成员变量赋值的方法将值传递给jsp页面。

1)对jsp标签来讲,需要使用<s:property>访问action传来的值。例如:

<input name="name" type="text" class="form_field_default" size="50" id="name" value="<s:property value="user.name"/>" >

也可以这样:

<input name="name" type="text" class="form_field_default" size="50" id="name" value="${name} "/>" >

前者传过来的user是对象,有name属性;后者传过来的name是简单类型数据,如string。

2)对struts2标签来讲,需要%{变量}的方式访问传来的值。例如:

<s:textfield name="name" id="name"  size="40"  value="%{user.name}"> </s:textfield>  

<s:textfield name="name" id="name" size="40"  value="%{name}"> </s:textfield>  

 6. jsp输出表达式、struts2 action之间

jsp输出表达式也可以直接输出struts2 action传来的值。例如:

<%=pageNum * pageSize%>

其中,pageNum和pageSize是struts2 action传来的值。

 

五 request、response 、session的一些常用方法

request: 
1、请求的服务器:<%=request.getServerName()%>
2、请求协议:    <%=request.getProtocol()%>
3、请求方法:    <%=request.getMethod()%>
4、请求端口号: <%=request.getServerPort()%>
5、Context路径: <%=request.getContextPath()%>
6、Servlet路径: <%=request.getServletPath()%>
7、URI路径:     <%=request.getRequestURI()%>
8、查询字串:    <%=request.getQueryString()%>

9、使用者主机IP:<%=request.getRemoteAddr()%>
10、使用者使用端口号:<%=request.getRemotePort()%>

response:
1、刷新,进入页面: response.setHeader("Refresh","3;"+member)

2、response响应生成图片
3、重定向
重定向是response的另一个用处,与forward不同的是,重定向会丢失所有的请求参数及请求属性。
response.sendRedirect("")
4、增加Cookie
Cookie通常用于网站记录客户的某些信息,比如客户的用户以及客户的喜好等。一旦用户下次登陆,网站可以获取到客户的相关信息,根据这些客户信息,网 站可以对客户提供更友好的服务。Cookie与session的不同之处在于:session关闭浏览器后就失效,但Cookie会一直存放在客户端机器 上,除非超出Cookie的生命期限。
增加Cookie也是使用response内置对象完成的,response对象提供了一个方法。
void addCookie(Cookie cookie):增加Cookie.
创建Cookie:(1)创建Cookie实例;
(2)设置Cookie的生命期限;
(3)向客户端写Cookie
//获取请求参数 
String name = request.getParameter("name");
//以获取到的请求参数为值,创建一个Cookie对象
Cookie c = new Cookie("username",name);
//设置Cookie对象的生命周期24小时
c.setMaxAge(24*3600);
response.addCookie(c);

   通过getCookies()方法来访问Cookie
//获取本站在客户端上保留的所有Cookie
Cookie[] cookies = request.getCookies();
//遍历客户端上的每个Cookie
for(Cookie c:cookies){
//如果Cookie的名为username,表明该Cookie是我们需要访问的Cookie
if(c.getName().equals("username"))
System.out.println(c.getValue());
}

session:
1、session.invalidate(): 可以让session事务失效
2、session.getId():获取session id
3、如果Cookie功能关闭,则session id无法存储,也就无法在下一次请求时一并送至伺服器,为了让进程追踪得以进行,您必须使用 rewriting来传送session id,使用response的encode()可以自动将session id编进中。
4、session.getMaxInactiveInterval():取得session的等待期限,取得的值以秒为单位
5、session.setMaxInactiveInterval():设定等待期限,设定的值也是以秒为单位
6、session的等待期限也可以在web.xml中设定

 

参考:http://blog.csdn.net/moonsheep_liu/article/details/6768699

分享到:
评论

相关推荐

    ajax请求传值Struts2+jsp

    本教程将详细讲解如何在Struts2(版本2.3.24.1)框架下,结合JSP页面实现AJAX请求和传递数据。 ### 一、Struts2框架简介 Struts2是基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了一种组织应用...

    jsp表单的FORM传值

    jsp表单的FORM传值是指在jsp页面中使用FORM表单来传递数据。在jsp中,使用&lt;jsp:useBean&gt;动作来使用javaBean,javaBean是一种特殊的java类,可以将java处理代码从jsp页面中分离,使得jsp页面变得更加简洁。 使用&lt;jsp...

    struts2传值

    以上就是Struts2中传值的主要方式和一些基本用法。理解这些概念和实践方法对于开发基于Struts2的Web应用至关重要,它能帮助开发者更有效地管理视图层与控制层之间的数据流动,从而提高代码的可读性和可维护性。在...

    jsp页面传值中文乱码问题处理.docx

    在 JSP 页面中传值时,中文字符可能会出现乱码问题,这是由于字符编码不一致所引起的。下面将详细讲解 JSP 中文乱码种类和解决方案。 JSP 文件中文内容显示乱码 在 JSP 文件中,如果中文内容显示乱码,可能是由于...

    Struts2的三种传值方式比较(附demo)

    在本篇文章中,我们将详细探讨Struts2的三种主要的传值方式,并通过一个简单的Demo来加深理解。 1. **Action属性传值** Struts2的核心是Action类,每个Action类都代表一个特定的业务逻辑。我们可以通过在Action类...

    关于JSP页面间的传值

    在JSP(Java Server Pages)开发中,页面间的传值是一项非常基础且重要的技术。它涉及到如何在不同页面之间传递数据,以实现页面间的数据共享。本文将根据提供的文件信息,详细介绍几种常见的JSP页面间传值方法,并...

    struts2+JSP

    2. **脚本元素(Scripting Elements)**:包括变量声明、表达式和脚本块,允许在JSP页面中编写Java代码。 3. **EL(Expression Language)**:一种简洁的表达式语言,用于获取和设置页面作用域内的对象属性。 4. **...

    JSP中java代码与js之间的传值

    在JavaServer Pages (JSP) 中,我们经常需要在Java代码和JavaScript之间传递数据。这在构建动态网页时尤其重要,因为Java代码通常用于处理服务器端逻辑,而JavaScript则负责客户端交互。这篇博客将探讨如何在JSP中...

    struts2-传值方式

    ### Struts2 传值方式详解 在Struts2框架中,实现前后台的数据传递是构建Web应用的基础之一。本文将详细介绍三种常见的Struts2数据传递方式:通过默认的Action属性传递、使用Value Object(VO)传递以及利用...

    struts 2中文汉字传值

    总之,Struts 2 中处理中文汉字传值的关键在于理解和正确使用字符编码,包括设置页面编码、响应编码、URL编码和Action中的解码步骤。确保每个环节都与UTF-8编码兼容,可以避免中文字符的乱码问题。在实际开发中,还...

    JSP和Serverlet之间的传值方法

    在Web开发中,JSP(JavaServer Pages)和Servlet是两个重要的技术组成部分,它们通常被用来处理客户端请求并生成动态网页内容。为了实现功能更为复杂的应用,开发者经常需要在JSP页面和Servlet之间传递数据。本文将...

    几种JSP页面传值方式.txt

    以上介绍了几种常用的JSP页面传值方式,包括使用表单、URL重写、JavaScript动态改变表单行为、JSP内置对象和标签库以及Cookie和Session。不同的场景下可以选择不同的方法来满足需求。在实际应用中,开发者还需要考虑...

    jsp页面间通过request/session传值

    通过以上示例,我们可以清晰地了解到如何利用 JSP 中的 `request` 和 `session` 对象来实现数据在不同页面间的传递。此外,我们还学习了如何使用 JavaBean 来管理更复杂的数据结构。这些技术是构建动态 Web 应用程序...

    struts2+jdbc+jsp增删改查

    Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建Java Web应用程序。在本项目"struts2+jdbc+jsp增删改...通过实践这样的项目,开发者能够深入理解如何在实际应用中整合Struts2、JDBC和JSP,提升自己的技能。

    jsp+struts2完整实例

    【标题】"jsp+struts2完整实例"揭示了这个项目是基于Java Web技术栈,主要使用了JSP(JavaServer Pages)和Struts2框架来实现一个完整的应用程序。Struts2是一个开源的MVC(Model-View-Controller)框架,它在Java ...

    jsp+struts2购物车

    在Web开发中,"jsp+struts2购物车"是一个常见的实战案例,它涉及到Java Web技术的多个层面,包括前端展示、后端业务处理以及数据库操作。这个项目是学习JSP(JavaServer Pages)和Struts2框架的理想实践,下面我们将...

    struts2 配置JSP时需要的jar

    2. **JSP和Struts2的集成**:在JSP页面中,我们可以通过`&lt;s:form&gt;`、`&lt;s:textfield&gt;`等Struts2标签库来创建表单和输入字段,实现与Action的交互。这需要`struts2-jsp-plugin.jar`,它包含了JSP标签库的实现。 3. **...

    struts2中jsp和freemarker模板视图的案例

    在这个“struts2中jsp和freemarker模板视图的案例”中,我们将深入理解如何使用这两种不同的视图技术与Struts2框架进行集成。 首先,我们来看JSP(JavaServer Pages)作为视图的实现。JSP是Java中的动态网页技术,...

    jsp+hibernate+struts2简单登录和注册

    **标题与描述解析** 标题"jsp+hibernate+struts2简单登录和注册"指出,这个项目是基于Java Web...通过学习这个项目,开发者可以深入了解JSP、Hibernate和Struts2如何协同工作,以及如何利用MySQL来存储和检索数据。

    JSP与Servlet传值技术总结

    JSP与Servlet传值技术是Java Web开发中的一种重要技术,用于实现前台和后台之间的数据传递。该技术有多种实现方式,本文将对其进行总结和说明。 JSP到JSP的传值技术 JSP到JSP的传值技术主要有四种: 1. 超链接...

Global site tag (gtag.js) - Google Analytics