JSP学习小结

来源:互联网 发布:农村淘宝服务站申请 编辑:程序博客网 时间:2024/04/28 08:10

(如有错误,欢迎指正)
1.关于jsp
jsp是一种动态网页技术,动态生成网页数据,而不是有动态效果的网页 。常见的集中动态网络技术,jsp,asp(微软),php(超级文本预处理语言)。

2.jsp的运作过程
用户发出请求访问jsp页面时,jsp引擎会把该jsp页面转换成一个java文件,即servlet类,生成字节码文件,即.class文件,servlet类只在第一次访问时进行编译。(tomcat接收到.jsp的请求后,会到org.apache.jasper.servlet.jspservlet中处理,在web.xml位于conf文件夹中配置,执行.class文件,输出给tomcat,然后tomcat再返回给客户端)
3.servlet和jsp的区别
servlet处理逻辑很方便,但是页面表现很麻烦 ,jsp页面表现方便,处理逻辑麻烦。

Jsp: <p>aaaa</p>Servlet:  out.print(“<p>aaaa</p>”);

4.include指令与动作
静态导入: <%@ include file=”included.jsp”%>(可在jsp中调用)
动态导入: <jsp:include page=”included.jsp”></jsp:include> (不可调用,且会生成.java, .class文件,相比静态更加灵活)
动态导入传参:

<jsp:include page=”1.jsp”>    <jsp:param name=”a” value=”AAA”/><jsp:param name=”b” value=”BBB”/>   </jsp:include>

5.请求转发和重定向

response.sendRedirect(“1.jsp”);request.getRequestDispatcher().forward(request,response);pageContext.forward(“1.jsp”);

6.request接收表单提交的数据
(获取单个数据)

request.getParameter("username");

(获取多个数据)

if(request.getParameterValues("favorite")!=null){String[]favorites=request.getParameterValues("favorite");for(int i=0;i<favorites.length;i++){  out.println(favorites[i]+"&nbsp;&nbsp;&nbsp;");} }

TIPS:对应表单type=checkbox 如:<input type="checkbox" name="favorite" value="read"/>
`
7.request-方法小结

请求体的MIME类型:<%=request.getContentType() %><br>协议类型及版本号:<%=request.getProtocol() %><br>服务器主机名:<%=request.getServerName() %><br>服务器的端口号:<%=request.getServerPort() %><br>请求文件长度:<%=request.getContentLength() %>byte<br>请求客户端的IP地址:<%=request.getRemoteAddr() %><br>请求的真实路径:<%=request.getRealPath("request.jsp") %><br>请求的上下文路径:<%=request.getContextPath() %><br>用来解决用户名中文乱码,但无法解决URL传递的中文乱码问题:request.setCharacterEncoding("UTF-8");获取客户端保存的cookie:Cookie[] cookies=request.getCookies();

8.cookie(详细代码见myeclipse/imoocJSPCourse)
cookie是web服务器保存在客户端的一系列文本信息,多应用与判断用户是否登录网站,以及购物车的处理
创建cookie对象:Cookie c=new Cookie(String key,Object value);
写入cookie对象:request.addCookie(c);
读取cookie对象:Cookie[] cookies=request.getCookies();
解决cookie不能保存中文问题:URLEncoder.encode(request.getParameter("username"),"utf-8");
URLDecoder.decode(cookie.getValue(),"utf-8");
设置最大生存期间,10天等于864000秒:Cookie.setMaxAge(864000);
设置cookie失效:c.setMaxAge(0);

TIPS:关于URLEncoder(来自百度搜索)

String encodeStr = URLEncoder.encode("中国", "utf-8"); System.out.println("处理后:" + encodeStr); String decodeStr = URLDecoder.decode(encodeStr, "utf-8"); System.out.println("解码:" + decodeStr); 处理后:%E4%B8%AD%E5%9B%BD 解码:中国

9.解决输出到客户端乱码问题

response.setContentType("text/html;charset=gbk");
0 0
原创粉丝点击