jsp部分知识点小结
Jsp部分知识点小结
安徽海文 sai
1, 转发:request.getRequestDispatcher(“/example.jsp”).forward(request,response);是在servlet的doPost方法或者doGet方法的最后,重新跳转到页面example.jsp。这属于同一个请求(同一个request),如果在转发之前,进行了如下代码:request.setAttribute(“demo”,demo);,则可以在example.jsp页面取到demo的值,用el表达式.${demo}。如果demo是一个对象,则,在example.jsp页面可以直接以如下形式取到该对象的属性值。例如${demo.id}、${demo.userName}.(这种el取值,必须有一个前提,那就是demo对象对应的类Demo.java里面必须有属性的get和set方法,而且id和userName为Demo.java文件里的属性,不是对应的数据库表tb_demo里的列名!)附:Demo.java:
Public class Demo{
Private Integer id;//编号id
Private String userName;//用户姓名
Public Integer getId(){
return this.id;
}
Public void setId(Integer id){
this.id=id;
}
Public String getUserName(){
return this.userName;
}
Public String setUserName(String userName){
this.userName=username;
}
}
如果类似request.setAttribute(“demos”,demos);其中demos表示的是demo对象集合,
List<Demo> demos=new ArrayList<Demo>();那么,在example.jsp页面取对应的值为:
${demos},因为demos是集合,如果需要遍历,则要用到jstl里面的<c:forEach></c:forEach>循环取出demos集合里面的每一个demo对象。示例如下:
<c:forEach items=”${demos}” var=”dem” >
<tr><td>编号</td><td>用户姓名</td>
<tr><td>${dem.id}</td><td>${dem.userName} </td>
</c:forEach>
2, 关于各个jsp页面之间的传值与取值:
如果example.jsp页面有类似如下内容:(以下exampleServlet.do对应TestExampleServlet.java文件)
<form action=”exampleServlet.do” method=”post”>
<input type=”hidden” name=”id” />
<table>
<tr>
<td>编号:</td><td><input type=”text” name=”userid” /></td>
<td>用户姓名:</td><td><input type=”text” name=”username” /></td>
</tr>
<tr><td colspan=”2”><input type=”submit” value=”提交” /></td></tr>
</table>
</form>
则,点击”提交”后,会进入到exampleServlet.do,也就是TestExampleServlet.java文件里的doPost()方法里去(因为页面的method=”post”)。
在doPost()方法里,就可以获得页面form表单的值,获取形式如下:
String id = request.getParameter(“id”);
String userid = request.getParameter(“userid”);
String username = request.getParameter(“username”);
其中,括号里的参数为form表单设置的name属性值!
3, 所有的url传值形式(el表达式用:{param.xx}取值,java代码用: request.getParameter(“xx”);取值)
(1)形如:<a href=”a.jsp?username=xl&pass=123456”>跳转到a.jsp</a>这种形式(即一个jsp页面跳转到另一个jsp页面),则在a.jsp页面可以用el表达式取到url后面传的参数,取值方法如下:${param.username} ${param.pass} 记住,el表达式里面的param,对应java代码里面的parameter,即request.getParameter(“username”)和request.getParameter(“pass”);
(2)形如:window.location.href=” exampleServlet.do?username=xl&pass=123456”; 此处window.location.href的意思是将本jsp页面的地址改为exampleServlet.do,换句话说,就是会执行exampleServlet.do里面对应的doGet或doPost方法。那么,在doGet或doPost方法里,获取传过来的username和pass的方法如下:
String userName = request.getParameter(“username”);
String password = request.getParameter(“pass”);
由于servlet的最后,一般都会重新转发(如: request.getRequestDispatcher(“/example.jsp”).forward(request,response);)所以window.location.href=” exampleServlet.do?username=xl&pass=123456”实际上是会将本页面跳转为: example.jsp。注意:不是打开一个新窗口显示example.jsp,而是将本页面替换!!!如果是:
window.open (”exampleServlet.do?username=xl&pass=123456”);则浏览器会新打开一个网页窗口,显示example.jsp的内容。
注意:top.location.href=”test.do”;是将父页面的地址改为: test.do,即父页面会执行test.do对应的doGet()或doPost()方法。此做法一般用来刷新父页面的显示内容。比如:在a.jsp(父页面)里打开了一个新窗口b.jsp(子页面),如果在b.jsp里面执行了window.opener.location.href=”test.do”,那么a.jsp页面会自动执行test.do对应的doGet()或doPost()方法。
注意:window.close(),表示的是关闭本页面。
4, 如果希望用超链接的形式调用js,则写法如下:
<a href=”javascript:void(0);” onclick=”f();” >点击执行js里面的f()函数</a>
附:<script>
function f(){
alert(1);
}
</script>
如此,点击超链接后,会弹出1。
5,如果希望页面加载完毕就自动执行某段js,则普通写法如下:
<script>
Window.onload=function(){
//此处写要执行的js代码
}
</script>
Jquery的写法如下:
<script>
$(function(){
//此处写要执行的js代码
});
</script>
6, 在jdbc里面获取数据库对应表数据的值如下:
List<Demo> demos=new ArrayList<Demo>();
while(rs.next){
Demo demo=new Demo();
Demo.setId(rs.getInt(“id”));//双引号里面的参数id为tb_demo表对应的列名id
Demo.setUserName(rs.getString(“user_name”)); //同上
demos.add(demo);
}
reeturn demos;
附:Demo.java对应的表:tb_demo,列名为:id int, user_name varchar(50)
浙公网安备 33010602011771号