1.通过响应onclick方法来跳转并传参数,在另一个页面中用reque.getparameter("user")便能得到该参数的值。
οnclick="location.replace('userprivate.jsp?user=<%=rs.getString("gid")%>')"
其中rs是我查找数据库的返回值。
2.用javascript来弹出有确定和取消的提示框:
<script type="text/javascript">
function test(){
var k=window.confirm("你确定要修改或删除该记录");
if(k){
event.returnValue=true;
}
else{
event.returnValue=false;
}
} </script>
<td ><a href="groupdelete.jsp?gdelete=<%=rs.getString("gid")%>" οnclick="test()" >删除</a></td>
在该表达式中点击“删除”时会弹出询问框,当选择“确定”时会跳转到href指向的链接,此时test()返回true,点击“取消”时test()
返回false所以页面不会跳转。gdelete可以是任意的字符串,比如gdelet="hello"。
在< a href="/good.jsp"
3.javascript取得<form name="registerform"...> <input name="password" ...> <input type="submit" name="Submit" value="提交" οnclick="test()"/></form>中的各个input的value值:
registerform是form的name,password是input的name,value是input对应的value,
test()在最后一个submit按钮中调用,当test返回true是就提交表单,否则给出提示信息,不会提交表单。
<script type="text/javascript">
function test(){
if(document.registerform.password.value=="")
{
alert("密码不能为空!");
event.returnValue=false;
return;
}
if(document.registerform.password.value!=document.registerform.confirmpassword.value=="")
{
alert("两次输入的密码密码不相同!");
event.returnValue=false;
return;
}
}
</script>
4.为数据库增加一列: alter table userorder add personnum int;
><u><a href="storeuserorder.jsp?user=<%=request.getParameter("user")%>
&starttime=<%=request.getParameter("starttime")%>
&endtime=<%=request.getParameter("endtime")%>
&personnum=<%=request.getParameter("personnum")%>
&totalmoney=<%=totalprice%>
&textarea=<%%>">确定并提交订单 </a></u>
5.
JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP。
通过对象 request和 session (不考虑 application)完成传值。
一、JSP -> servlet
JSP页面有3种方法向 servlet传值: form表单、URL 、其他
<!-- JSP page -->
...
<%......
session.setAttribute("testSession","Hello session");
reqeust.setAttribute("testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">click me</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
<input name="username" type="test" />
<input type="submit" value="submit">
</form>
...
5.1、对于该JSP页面 form表单的内容,如 <input>标签,在 servlet可用 request.getParameter("username");获取。
5.2、URL:比如这里的 <a>标签的 href属性与 <form>标签的 action属性的值 "JspServlet?action=toServlet",在 servlet同样用 request.getParameter("action")获取;所要注意的是这里的 url 要和 servlet在web.xml里的 <url-pattern>标签的路径所对应。这部分后面会提到。
5.3、java片段代码,servlet只能接到 session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容。
6、Servlet
6.1、关于 servlet,首先要提到它在 web.xml里的注册内容,如
<servlet-name>JspServlet1</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet1</servlet-name>
<url-pattern>/JspServlet</url-pattern>
</servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<url-pattern>/admin/JspServlet</url-pattern>
</servlet-mapping>
假如 project name 是 jsp2servlet,则该 project根目录的 Context是 /jsp2servlet,在地址栏里显示是 http://localhost:8080/jsp2servlet/;
在 project 根目录下有 admin目录,对应的 Context是/admin/jsp2servlet,在地址栏里显示是 http://localhost:8080/jsp2servlet/admin,
在这两个目录下的 jsp 都想转到 com.demo.JspServletDemo类做处理,这时的 url需要在 web.xml注册两次。
1)在 http://localhost:8080/jsp2servlet/ 目录下的 jsp 页面 JspServlet1,url应写为 "JspServlet"
2)在 http://localhost:8080/jsp2servlet/admin/ 目录下的 jsp 页面访问 JspServlet2,url应写为 "admin/JspServlet"
6.2、在 servlet直接用 request对象,得到发送来的请求内容;用 request.getSession(),得到 session对象,从而得到会话内容。
这里的 request.getSession()的参数为 boolean 类型,该方法意思可理解为:
session可以认为是每一个IE进程对应一个会话(新开一个IE进程就可以对应两个会话的),getSession都是返回当前用户的会话对象,参数的区别在于:
参数为true (默认),则如果“当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回;
参数为false,则如果“当前用户的会话对象”为空,则返回 null (即不自动创建会话对象)。
利用这个方法可以判断 session是否过期,如下:
if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");
7、Servlet -> JSP
从 servlet转到 jsp不外乎两种方法,重定向 和 url转发
7.1、重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在 servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url) 方法。注意这里的 url前不带斜线 /,如 response.sendRedirect(”test.jsp“)
7.2、url转发 ( Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而这里的 url前需要带斜线 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)
在servlet中用 request.setAttribute("sequence", sequence);设置sequence的值,在JSP中用order_num=request.getAttribute("sequence").toString();来取得相应的值。
8.永远不要再JSP中用<%! %>来声明全局变量,因为这些变量在跳转到下一个页面时不会被重置,这样就会形成累加。
9.用dreamweaver做的JSP文件可能存在路径的问题,只要在JSP文件中加入:
(1)在JSP开头加入
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
(2)在JSP的head中加入:<base href="<%=basePath%>">
10.由于servlet在运行时只是加载一次,所以对数据库连接的操作不能定义成static,要在没次操作时都重新去连接数据库,否则就会出现在第一次正确操作后第二次操作就会出错。
11.数据库查询后的结果集保存的是相应项的索引,索引在没有取出相应项的值之前不能删除该行也不能关闭跟数据库的链接,否则就会出现opration not allowed after ResultSet have been closed;
12.mysql数据库表的导入和导出:
1.数据导入:
从cmd进入mysql安装目录下的bin,然后输入以下命令就能导出表:
mysqldump -u root -p test -d > d:/test.sql 其中test为要导出数据库名字。d:/test.sql 为导出文件放置的位置以及文件名
2.数据导出:
同样输入以下命令就能将表导入(你只需要执行这一句就行了)
mysql -u root -p test<d:/test.sql 其中test为要导入数据库名字。d:/test.sql 为导入文件放置的位置以及文件名
这些都是我前段时间做网站开发后台处理程序时所遇到的主要问题的解决方法,希望能对新手有帮助。
QQ:772319357