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>
原文地址:https://www.cnblogs.com/lgxstudy/p/4242972.html