对JSP、JAVASCRIPT、SERVLET之间数据传递的总结
来源:互联网 发布:排队软件app 编辑:程序博客网 时间:2024/05/29 15:10
http://blog.csdn.net/tingqier/article/details/3492146
1、 JSP与JAVASCRIPT
A、JSP传到JAVASCRIPT
方法一:
用触发事件的方法,调用JAVASCRIPT的一个函数进行传值
B、JAVASCRIPT传到JSP
方法一:
<script language="JavaScript">//设定焦点function giveFocus() {document.myform.user.focus()}//提交时调用newParam()函数function submitForm() {newParam()document. myform.submit()}//重置时调用该函数function resetForm() {document. myform.reset()document. myform.user.focus()}//该函数用来给另一个控件复制,既相当于由JAVASCRIPT处理后传回给JSPfunction newParam(){var para1 = document. myform.user.value;var para2 = document. myform.password.value;var para3 = para1+para2;document. myform.newParam.value = para3;}</script>
2、 JSP与SERVLET
A、JSP传到SERVLET
方法一:
用表单提交时,隐藏域提交方式SERVLET像取其他控件的方法一样用request.getParameter("隐藏域的name");方法获得值。
B、SERVLET传到JSP
方法一:
在SERVLET中把对象存入request.setAtribute(“别名”,对象名);里;再在JSP中调用request.getAtribute(“别名”);取。
方法二:
response.sendRedirect("loginservlet.jsp?msg=1");传到JSP,JSP中用request.getParameter("msg")获取其值。
方法三:
用户用浏览器载入初始HTML页面,该页面是由Web使能的应用服务器提供的。应用服务器以与WebServer相同的方式来进行Web文件服务。这个页面是整个Web应用的入口点。它使用了HTML FORMaction标记来访问Servlet。在我们的例子中,这个Servlet是LoginServlet。同样附加的参数也随着FORM的动作发给Servlet。下面是一段例子:
<FORM action="http://localhost:8080/servlet/LoginServlet" method="POST"><input type="text" size="30" name="firstname"><input type="text" size="30" name="surname">..<input type=hidden name=host value="localhost"><input type=hidden name=port value="9876"><input type=submit value=" Submit "></FORM>
请求一般是以HTTP或HTTPS来发起,然后由Servlet来处理。它使用HttpServletRequest.getParameter()方法来访问FORM表单提供的参数。
Servlet然后测试用户是否有Session。Session用来将从远程客户端来的一系列请求关联起来,这对于无状态保持功能的HTTP协议是必须的。
Session可用如下方法来创建:
HttpSession session = req.getSession(true)
;
对象可以被加入到Session中去:
session.putValue(“host”,hostToConnectTo);
session.putValue(“port”,tmpPort);
Controller
Servlet负责调用处理用户请求的JavaBean。它也负责创建对用户的响应。在我们建议的应用结构中,响应将被传递到JSP。因此,Servlet被叫做Controller。
回到我们的例子。下面的代码实例化一个类型CICSEmulator的新类叫newEmulator。这是一个由第三方厂商提供的3270终端仿真类,它提供了一组对仿真终端直接操纵的方法(类似的类也可以用IBM VisualAge for Java企业版中的Enterprise AccessBuilder来生成)。newEmulator可以从Session中传递变量,此例中变量为远程主机和端口。
CICSEmulator newEmulator = new CICSEmulator();
newEmulator.setTN3270Port(portToConnectTo);
newEmulator.setTN3270Host(hostToConnectTo);
第二个实例化的类是一个Java Bean叫做AcctDetails。它是一个数据访问Bean,它将向后端的系统查找和获取数据。AcctDetails将newEmulator来作为它的 3270终端,然后传递变量(姓和名)给它的set方法。
AcctDetails getAccountDetails = new AcctDetails();
getAccountDetails.set3270Emulator(newEmulator);
getAccountDetails.setSurname(inputsurname);
getAccountDetails.setFirstName(inputfirstname);
数据访问Bean执行请求
Bean实例getAccountDetails的方法performWork(),它连接后端3270系统,并基于用户提供的姓名来获取用户帐户的细节。
try {
getAccountDetails.performWork();
session.putValue("resultsBean", getAccountDetails);
}
catch ( IllegalStateException e ) {
// handle the error
}
如果执行成功,Servlet把getAccountDetails Bean放入用户的session中。这个Bean的标识符为resultsBean,它包含了用户查询的结果,这些结果可以用Bean的get方法来访问。
控制权传给JSP
我们已经提到,MVC模式的重点就在于它隔离了表现层与业务逻辑。Servlet负责处理请求,它会去调用数据访问Bean,数据访问BeangetAccountDetails包含了从后端系统访问和获取数据的服务器端逻辑。后端系统(Model)包含了业务规则。而对用户的响应(View)是由JSP创建出来的。
Servlet将request和response对象传递给JSP时遵循如下的语法:
getServletContext().getRequestDispatcher(“/jspDemo/login.jsp”).forward(req,res);
Forward方法允许Servlet将响应的处理传给第三方。它的参数request和response必须就是调用servlet的service方法时传递的对象。 它使用getRequestDispatcher对象来得到requestDispatcher,从而确定了到目的JSP的路径。以“/”开始的JSP路径名被解释成相对于当前应用上下文环境的根路径。
访问ResultsBean
JSP负责创建对用户的响应,它可以访问getAccountDetails Bean的数据(使用标识符resultsBean来引用)。这些在HTML中用如下语法来完成:
<HTML>
<BODY>
.
.
<jsp:useBean id="resultsBean" scope="session" class="acct.AcctDetails " />
<jsp:getProperty name="resultsBean" property="*"/>
其中<JSP:useBean>是去查找已存在的对象(本例中是resultsBean)。本例中我们把getAccountDetailsbean放入session中并命名为resultsBean。于是上述JSP语句就从session中得到了resultsBean,然后就可以通过访问resultsBean的get方法来得到它的数据。
也可以通过如下JSP语句来实现:
<%= resultsBean.getDetails_Title() %>
<%= resultsBean.getDetails_Initial() %>
上述语句也是JSP表达式的一个例子。在<%=和%>之间所有的内容被放入JSP引擎中处理,结果被作为输出送给JSP文件。上述的两个表达式将执行resultsBean的get方法来显示用户的title和Middle_Initial。同任何一种脚本语言(如JavaScript)一样,JSP代码可以在HTML页面中任意嵌入。JSP的语法也非常简单,这意味着JSP可以由Web页面设计人员来维护而不是应用开发人员。开发人员负责的是servlet和数据访问Bean。在JSP中的任何改变不会影响到servlet,反之亦然。
响应
JSP在请求时被动态翻译成Java Servlet,并在应用服务器中缓存。后续JSP请求的响应将明显加速。用户收到的最终响应都是HTML页面(以.jsp为扩展名),这些页面包含了动态产生的内容。
3、 JAVASCRIPT与SERVLET
A、JAVASCRIPT传到SERVLET
<!-- 同时传两个值,加&符号,属于get提交 ,script用于转向,注意变量写法,str也是一个需要传递的值--> <script type="text/javascript"> function delcheck(str){ if(confirm("确认删除该条信息吗?")){ location.href="<%=basePath %>FinalAction?flag=del&id="+str; }else{ } } function editcheck(str){ if(confirm("要修改该条信息吗?")){ location.href="<%=basePath %>FinalAction?flag=editFirst&id="+str; }else{ } } </script>
B、SERVLET传到JAVASCRIPT
目前看来只能通过JSP传了。
4、JSP到JSP
<%=basePath %>emp/updateFirst.jsp?id=所要传的值>
或把对象放入request.setAtribute(“别名”,对象名);里,<jsp:forward page="empList.jsp"></jsp:forward>转向之后,然后在另一个JSP页面里用request.getAtribute(“别名”);取。
- 对JSP、JAVASCRIPT、SERVLET之间数据传递的总结
- 对JSP、JAVASCRIPT、SERVLET之间数据传递的总结
- 对JSP、JAVASCRIPT、SERVLET之间数据传递的总结
- JSP、JAVASCRIPT、SERVLET之间数据的传递
- jsp javascript servlet 数据传递总结
- jsp与servlet之间的数据传递
- Servlet与JSP之间的数据传递
- JSP、servlet、SQL之间的数据传递
- jsp,servlet,sql之间的数据传递
- JSP、servlet、SQL三者之间的数据传递
- JSP、servlet、SQL三者之间的数据传递
- Servlet和JSP之间的参数传递
- jsp与servlet之间的参数传递
- jsp与servlet之间的参数传递
- jsp与servlet之间的参数传递
- Jsp和Servlet之间的数据共享(数据传递和数据调用
- Jsp和Servlet之间的数据共享(数据传递和数据调用)
- Servlet之间传递数据
- string浅拷贝及其在dll中运用的注意事项
- WebApp本地存储 (离线缓存策略策略)
- virtual析构函数(作用)
- C#中的一些提示
- 【C++ STL】算法 <algorithm>中各种算法解析
- 对JSP、JAVASCRIPT、SERVLET之间数据传递的总结
- easysize.h 文件,直接复制粘贴新建一个easysize.h文件就行了
- ArcGIS Engine中调用GP的两种方法
- .net 弹出对话框的方法
- CString源码
- mfc控件随框变化(EasySize的用法,仔细看绝对有用)
- jQuery表格插件:帮助Web设计者驾御HTML表格
- 智能手机三维游戏开发性能优化的技术要点
- 如何查看电脑上是否安装有IIS服务