JSP之路

使用post提交的时候参数有中文时,在接收页面接收前必须对参数进行编码
request.setCharacterEncoding("UTF-8");


解决获取中文乱码问题
使用URLEncoder解决无法在Cookie当中保存中文字符串问题
request.setCharacterEncoding("utf-8");
String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
String password = URLEncoder.encode(request.getParameter("password"),"utf-8");
URLEncoder就是将URL中特殊部分进行编码。URLDecoder就是对特殊部分进行解码
将要显示的文字进行URLDecoder解码
JSP全程Java Server Pages,是一种动态网页开发技术

  • 性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件
  • 服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本
  • JSP基于Java Servlets API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等
  • JSP页面可以与处理业务逻辑的servlets一起使用,这种模式被Java servlet 模板引擎所支持
         JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台。这意味着JSP可以用最简单的方式来实现最复杂的应用


  • 与ASP相比:JSP有两大优势。首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。第二点就是JSP易于移植到非MS平台上。
  • 与纯 Servlets相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
  • 与SSI相比:SSI无法使用表单数据、无法进行数据库链接。
  • 与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
  • 与静态HTML相比:静态HTML不包含动态信息
  • JSP结构

JSP常用的三个page指令:language表示编程语言、import表示导入的java包、contentType表示文件格式和字符编码

JSP三大指令元素:include、page、taglib

JSP注释:
               1、HTML的注释:     <!--html注释-->  //客户端可见
               2、JSP的注释:          <%--html注释--%>  //客户端不可见
               3、JSP脚本注释:       //单行注释          /**/多行注释

JSP声明:
                    <%! Java代码%>

JSP表达式:
                    <%=表达式%>      //注意:表达式不以分号结束


以返回值的方式打印内容
                                    <%=printMultiTable2(out) %>
以脚本的方式输出内容
                    <%printMultiTable2(out); %>


JSP内置对象
1、内置对象简介
     jsp内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象
内置对象                                                                      描述
     pageContext                                                       JSP的页面容器
     request                                                               得到用户的请求信息
     response                                                             服务器想用户端的回应信息
     session                                                                用来保存每一个用户的信息
     application                                                          表示所有用户的共享信息
     config                                                                 服务器配置,可以取得初始化参数
     out                                                                     页面输出(向浏览器输出)
     page                                                                   表示从页面中显示出来一个Servlet实例
     exception                                                            表示JSP页面所发生的异常,在错误页中才起作用

2、四种作用域范围
      page:只在一个页面中保存属性,跳转之后无效
      request:只在一次请求中保存属性,服务器跳转后依然有效
      session:在一次会话范围中保存,无论何种跳转都可以使用,但是新开浏览器无法使用
      application:在整个服务器上保存,所有用户都可以使用
3、out
out对象常用方法如下:
                                   1、void println()向客户端打印字符串
                                   2、void clear()清除缓冲区的内容,如果在flush之后调用会抛出异常
                                   3、void clearBuffer();清除缓冲区的内容,如果在flush之后调用不会抛出异常
                                   4、void flush()将缓冲区内容输出到客户端
                                   5、int getBufferSize()返回缓冲区以字节数的大小,如不设缓冲区则为0
                                   6、int getRemaining()返回缓冲区还剩余多少可用
                                   7、boolean isAutoFlush()返回缓冲区满时,是自动清空还是抛出异常
                                   8、void close()关闭输出流
4、request/response


获取单个数据:<%=request.getParameter("username") %><br>
获取多个数据:<%String [] favorites = request.getParameterValues("favorite");
      for(int i=0 ; i<favorites.length;i++){
      out.println(favorites[i]+"&nbsp;&nbsp;");
        }
        %>

存储请求中的属性和返回指定属性的属性值:
<%request.setAttribute("password","123456");%>
 密码:<%=request.getAttribute("password") %>

       请求体的MIME类型:<%=request.getContentType() %><br>
       协议类型及版本号:<%=request.getProtocol() %><br>
       服务器主机名:<%=request.getServerName() %><br>
       服务器端口号:<%=request.getServerPort() %><br>
       请求文件的长度:<%=request.getContentLength() %><br>
       请求客户端的IP地址:<%=request.getRemoteAddr() %><br>
       请求的真实路径:<%=request.getRealPath("dologin.jsp") %><br>
       请求的上下文路径:<%=request.getContextPath() %> <br>

       重定向:     response.sendRedirect("dologin.jsp");
      请求转发:        request.getRequestDispatcher("request.jsp").forward(request,response);

5、session
     当把所有和对应网站的页面都关了,那么,该网站分配给该用户的session结束

getCreationTime()会返回session创建时间,但是是一个数字串,要通过SimpleDateFormat该格式
<%     SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
       Date d = new Date(session.getCreationTime());
     %>
    session创建时间:<%=sdf.format(d) %>

    session的ID编号:<%=session.getId() %><br>
     定义属性,即使页面调转也可以获取

    session.setAttribute("username","admin");
    session中获取用户名:<%=session.getAttribute("username") %><br>
     获取所有定义好的session属性的名称:
               String [] names = session.getValueNames();
               for(int i = 0 ; i<names.length;i++)
               {
                    out.println(names[i]+"&nbsp;&nbsp;");
                }

      设置当前session最大生成期限  单位是秒

               session.setMaxInactiveInterval(10);
1
setProperty动作会自动将表单提交的内容自动匹配到javaBean中(实例化并且赋值)
<jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
       <h1>setProperty动作元素</h1>
       <hr>
       <!-- 根据表单自动匹配所有的属性 -->
       <jsp:setProperty property="*" name="myUsers"/>

2
根据自己设定固定的几个属性匹配
<jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
       <h1>setProperty动作元素</h1>
       <hr>
       <!-- 根据表单自动匹配所有的属性 -->
       <jsp:setProperty property="username" name="myUsers"/>

3
和表单无关,自己设置值给javabean
<jsp:setProperty property="username" name="myUsers" value="冰玉"/>
<jsp:setProperty property="password" name="myUsers" value="88888"/>

4
跟request参数关联
通过URL传参数给属性赋值
<jsp:setProperty property="password" name="myUsers" param="mypass"/>
根据地址栏的参数名获取参数值赋值给property

getProperty
<!-- 使用传统的表达式获取用户名和密码 -->
       用户名:<%=myUsers.getUsername() %><br>
       密码:<%=myUsers.getPassword() %><br>
<!-- 使用getProperty方式获取用户名和密码 -->
        用户名:<jsp:getProperty property="username" name="myUsers"/><br>
       密码: <jsp:getProperty property="password" name="myUsers"/><br>
forward动作
语法:
<jsp:forward page="URL"/>
等同于: request.getRequestDispatcher("/url").forward(request,response);
<jsp:forward page="user.jsp"/>     相当于服务器内部跳转
等价于:    <% request.getRequestDispatcher("user.jsp").forward(request,response);  %>

Param动作
语法:     <jsp:param  name="参数名"  value="参数值">
          常常与<jsp:forward>一起使用,作为其的子标签
          在使用forward跳转之前可通过Param动作传递一些参数
          在跳转后的页面使用     request.getParameter("name");来获取
          
实现DBHelper类型
String driver = "com.mysql.jdbc.Driver";  //数据库驱动
//链接数据库的URL地址
String url  =  "jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=UTF-8
String username="root";  //数据库的用户名
String password="";  //数据库的密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏洛克·林

有钱的捧个钱💰场或人场~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值