zoukankan      html  css  js  c++  java
  • jsp学习

    1.jsp语法

    注释方法:

    <!-- HTML注释 -->  这种注释不安全可通过查看源文件看到。

    JSP注释方法:
    <%--JSP注释 --%>
    <%//单行注释 %>
    <%/*多行注释*/ %>

    out对象输出语法:

    out.println 代表换行输出

    out.print  不换行输出

    例子:

    <%
    out.println("谈北京精神");
    out.print("再谈北京精神");
    %>

    2.表达式与 变量

    使用out对象输出时需要在HTML中进行嵌套,页面中会显得混乱。所以JSP还提供了领一种输出显示方式,就是借助表达式实现输出显示

    <% 变量类型 变量名=值%>

    <% 
    String title="谈北京精神 "; String author="bdqn"; String category="新闻信息"; %>

    <%=java表达式%>注意:表达式后不能有";"

    <h1><%=title %></h1>

    使用日期对象

                     Date today=new Date();
                                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                                String str_today=sdf.format(today);

     表单与REQUEST对象

    比较 POST GET
    是否在URL中 显示参数
    数据传递是否有长度限制
    数据安全性
    URL是否可以传递
    效率

    表单验证中(表单提交方式)

    action:表示提交的地址
    method:表示提交的方式,get和post;

    get和post方式提交的区别:
    1、get提交的值会在地址栏中显示,post不会。
    2、get提交的数据有长度限制(255个字符),post方式则没有。
    3、get不安全,post安全更高。
    4、get效率更高,post效率较低。
    5、get可以直接访问提交的页面,post则不行。

    request对象获取的常用方法

    getParameter(String name)  返回指定参数名称的数值,返回值类型为String类型,若无对应名称的参数,返回NULL

    getParameterValues(String name)  返回具有相同参数名称的数值集合,返回类型为String类型的数组

    请求对象方法
    方法名称
    方法说明
    getCookies()
    获得客户端发送的Cookie
    getSession()
    返回和客户端关联的Session,如果没有给客户端分配Session则创建一个Session并返回
    getSession(Boolean create)
    和上面方法类似,不同的是如果没有给客户端分配Session则根据参数判断是否创建一个新的Session并返回
    getParameter(String name)
    获得请求中名为name的参数的值,如果请求中没有这个参数,返回null
    getParameterValues(String name)
    返回请求中名为name的参数值,这个值往往是checkbox控件提交的,因此返回的是一个String数组
    getMethod()
    返回这个请求使用的HTTP方法(例如:GET、POST、PUT)
    getHeader(String name)
    返回一个请求头域的值,这个值是一个字符串
    getIntHeader(String name)
    返回一个请求头域的值,这个值被转换成一个整数
    getPathInfo()
    返回在这个请求的URL的Servlet路径之后的请求URL额外的路径信息

    out内置对象
    out内置对象是在JSP开发过程中使用得最为频繁的对象,然而其使用起来也是最简单的。out对象用于向客户端浏览器输出数据,out对象常用的方法是:print()或者println()方法,这两个方法用于在页面中打印出字符串信息。
    request内置对象
    request对象,JSP中的request内置对象对应了Servlet中的HttpServletRequest类的对象,是最常用的JSP内置对象之一,这个内置对象当中封装了有关浏览器请求的信息,比方说,我们在页面上填写的用户名、密码等信息就封装在request当中。request对象的主要作用就是用来处理客户端请求。
    response内置对象
    response对象和request对象相对应,它用于响应客户端的请求并向客户端输出信息。 JSP中的response内置对象对应了Servlet中的HttpServletResponse类的对象,这个对象封装了JSP产生的响应,然后被发送到客户端以响应客户的请求。
    application内置对象
    application对应了Servlet中的ServletContext类的对象。它在每个Web项目中只有一个实例,常被用来实现不同用户之间的数据共享。因为不同的用户在访问application的时候,都是访问的同一个对象,这样的话,一个用户可以把需要共享的数据放到application对象中,然后其他用户就可以在这个对象中获得想要的共享数据了。
    session内置对象
    session是客户端浏览器和web服务器之间的会话,这个对象和request内置对象一样,都是我们平时开发JSP过程中最常用的内置对象之一,它最常见的作用就是进行访问控制,这个session对象是Servlet中HttpSession类的实例。
    pageContext内置对象
    pageContext对象是javax.servlet.jsp包中PageContext类的对象,他提供了对JSP页面中所有的对象及命名空间的访问,使用这个对象可以访问application对象,session对象,exception对象等等。也就是说这个对象可以访问除了本身之外的8个JSp内置对象。还可以访问绑定在page、request、session、application这些对象上的Java对象,它相当于JSP程序中所有对象功能的集成者。

    page内置对象
    page对象是java.lang.Object类的示例,他指的是一个JSP页面在翻译阶段翻译成Servlet之后,这个Servlet实现类的示例,也就是说它是JSP页面本身,因此,此对象的作用域范围仅仅限于当前JSP页面本身。
    config内置对象
    config对象对应Servlet中的ServletConfig接口,它用来表示Servelt的配置。当Servlet容器初始化一个Servlet对象的时候,Servlet容器会把某些初始化信息通过这个对象传递给Servlet。
    exception内置对象
    exception对象是java.lang.Throwable类的一个实例。他指的是运行时的异常,也就是被调用的错误页面的结果,只有在错误页面(在页面指令里设置了isErrorPage=true的页面)才可以使用。

    JSP中乱码的问题

    1.post方式提交时解决方案

    设置请求的编码方式(post请求方式):

    request.setCharaterEncoding("UTF-8");

    设置响应的编码方式:

    request.setCharacterEncoding("UTF-8");

    <%
        //设置请求的编码方式
        request.setCharacterEncoding("UTF-8");
        //设置响应的编码方式
        response.setCharacterEncoding("UTF-8");
    //以“post”方式提交解决乱码 String username
    =request.getParameter("username");//读取用户名 String con_password =request.getParameter("con_password");//读取用户密码 String email=request.getParameter("email");//读取EMAIL
      //get提交方式解决乱码
      //String t=request.getParameter("username");
      //String username=new String(s.getBytes("iso-8859-1"),"utf-8") ; 
    request.getParameter("username");
    
    
    request.getParameter("username");
    
    
    request.getParameter("username");

    %> <%=username %><br/> <%=con_password %><br/> <%=email %><br/>

    2.(get请求出现乱码)解决少处的中文编码时

    new  String(s.getBytes("iso-8859-1"),"utf-8") ; "s"为请求中取出的乱码中文

    3.配置tomcatconfserver.xml文件内容加上(URIEncoding="UTF-8")

     例:

    <Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
    <!-- A "Connector" using the shared thread pool-->

    页面间的数据传递

    1.使用属性存取数据

    setAttribute()方法的语法:

    public void setAttribute(String name, Object o)

    没有返回值,参数NAME表示属性名称,参数o表示属性值,为Object类型。

    当要保存数据时,使用request对象直接调用即可。

    request.setAttridute("mess","注册失败");

    getAttribute()方法:

    public Object getAttribute(String name)

    有一个String类型的参数,返回值时候Object类型。获取属性的时候,可以使用String类型的属性名,从请求中取出对应的Object类型的属性值。

    在读取属性中保存的数据时,必须将数据转换成其他最初的类型。

    String mess=(String)request.getAttribute("mess");

    如果mess不为NULL,表示获得数据。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    //设置请求的编码方式
    request.setCharacterEncoding("UTF-8");
    //设置响应的编码方式
    response.setCharacterEncoding("UTF-8");

    String username=request.getParameter("username");//读取用户名
    if(username.equals("admin")){
    request.setAttribute("mess", "注册失败,请使用其他用户名");
    //response.sendRedirect("login.jsp");//返回注册页面没有任何提示信息(实现页面跳转)
    request.getRequestDispatcher("login.jsp").forward(request, response);//返回注册页面并提示信息
    }else{
    request.setAttribute("mess","注册成功");
    response.sendRedirect("newsDetail.jsp");
    }

    String con_password =request.getParameter("con_password");//读取用户密码
    String email=request.getParameter("email");//读取EMAIL
    %>
    <%=username %><br/>
    <%=con_password %><br/>
    <%=email %><br/>

    </body>
    </html>

    //注册失败显示的代码
    <% Object omess=request.getAttribute("mess");//Object类型数据
                    if(omess!=null){
                        out.print(omess.toString());//转换成mess相应类型的String类型数据
                    }
                %>

     重定向语法:

    respones.sendRedirect("URL")

    转发实现页面的跳转

    resquest.getRequestDispatcher()

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!-- 在此判断用户能否登录,如果可以登录,跳转至userLoginOk.jsp页面,如果不能登录请跳转回userLogin.jsp页面,并提示“用户名或密码错” -->
    <%
        //请求编码方式
        request.setCharacterEncoding("UTF-8");
        //响应编码方式
        response.setCharacterEncoding("UTF-8");
        String username=request.getParameter("username");//获取用户名
        String psw=request.getParameter("password");//获取密码
        if(username.equals("admin") && psw.equals("110")){//判断用户为admin,密码为110才能登陆
            //登陆成功
            request.setAttribute("msg", "登陆成功");//存入数据到msg
            response.sendRedirect("userLoginOk.jsp");//重定向到登陆成功页面
        }else{
            //登陆失败
            request.setAttribute("msg", "登陆失败");//存入数据到msg
            request.getRequestDispatcher("userLogin.jsp").forward(request, response);//转发到原页面,并显示错误提示
        }
    %>
    <br/>
    
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!--用户登录页面-->
    <form action="doUserLogin.jsp" method="post" >
    <label>用户名</label><input type="text" name="username" /><label>密码</label><input type="password" name="password" />
    <button type="submit">登录</button><br/>
    <% Object omsg=request.getAttribute("msg");
        if(omsg!=null){
            out.print(omsg.toString());    
        }
    %>
    
    </form>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!-- 登录成功 -->
    您登录成功!
    </body>
    </html>
  • 相关阅读:
    解决线程不能访问用户界面组件的问题
    Oracle使用手册(三)存储过程与触发器
    VC中的字符串操作
    Windows 窗体多线程
    VC中的指针操作
    读写独立存储库
    10个不用保养品的美容护肤法 生活至上,美容至尚!
    吃出来的美白方法 生活至上,美容至尚!
    八大梦境提醒的你疾病所在 生活至上,美容至尚!
    31条!最致命的生活小细节 生活至上,美容至尚!
  • 原文地址:https://www.cnblogs.com/lgxstudy/p/4242972.html
Copyright © 2011-2022 走看看