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)

posted on 2017-06-26 09:19  saixu  阅读(95)  评论(0)    收藏  举报

导航