编写Web页面的注意事项

来源:互联网 发布:qt 组态软件 编辑:程序博客网 时间:2024/04/28 13:32
1.创建Web项目:Dynamic Web project

选择Web version 2.5及以下,需要在web.xml文档中配置Servlet
选择Web version 3.0及以上是以注解的形式实现的(可以没有web.xml),实现原理反射
例:@WebServlet("/LoginServlet")

2.form表单的method属性决定是调用servlet的doGet()方法或者doPost()方法
<form action="./ResServlet" method="post">

3.获取表单数据时的乱码问题处理:
(1)doPost()方法乱码问题处理:
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("username");
String pwd =request.getParameter("pwd");
(2)doGet()方法处理数据乱码问题:
在Eclipse的Servers中的server.xml文件的:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
中加入URIEncoding="UTF-8"如下:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

4.Servlet的doGet()和doPost()方法区别:
doGet()方法不安全,提交方式数据(例如:登录的账号密码)会以拼接的方式显现在地址栏,最多只能传输1024B;
doPost()方法相对安全,可以避开以上问题,传输数据2MB。但就传输速度而言,get会比post更快一些。

5.网页面跳转的两中方式:
(1)重定向:response.sendRedirect("http://www.baidu.com");
访问范围:1)可以访问当前项目中的任意页面
2)可以访问web服务器中其他项目中的任意页面
3)可以访问外网
地址栏:
1)response.sendRedirect("/login.html");
加“/”定位到web服务器中存放项目的目录(webapps)
2)response.sendRedirect("login.html");
不加“/”定位到项目的根目录
(2)服务器跳转(请求转发):
request.getRequestDispatcher("main.html").forward(request, response);
注意:服务器跳转是不能访问外网的。只能跳转到当前项目中的页面。
("main.html")地址栏中加不加“/”都可以。
两者区别:
重定向(客户端两次请求,两次响应)地址栏会改变,请求转发(客户端一次请求,一次响应)地址栏不会改变。
地址指的是客户端请求的地址。

在jsp页面中写Java代码用<% int a=1; %>

6.三大作用域(request,session,application):
1)request,
请求,数据只在一次请求过程中有效。
2)session,
数据在整个会话中有效,服务器为每个用户浏览器创建一个Session对象:一个浏览器占用一个Session对象。
3)application,
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器
的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前
后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何
地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和
关闭决定了application对象的生命。它是ServletContext类的实例。
(request作用域最小,session稍大,application更大)
例:
Jsp页面代码:
<%
String msg1=(String)request.getAttribute("msg1");
String msg2=(String)session.getAttribute("msg2");
String msg3=(String)application.getAttribute("msg3");
%>
<%=msg1 %><br><br>
<%=msg2 %><br><br>
<%=msg3 %>

Servlet文件代码:

request.setAttribute("msg1", "Hello World!");//request传值,键-值的形式

HttpSession session = request.getSession();
session.setAttribute("msg2", "~哈哈哈O(∩_∩)O哈哈哈~");//session传值

ServletContext application=request.getServletContext();
application.setAttribute("msg3", "hello everybody!");//application传值

(1)response.sendRedirect("index1.jsp");//重定向
输出结果:
null //不能传值
~哈哈哈O(∩_∩)O哈哈哈~  //可以传值
  hello everybody!     //可以传值
(2)request.getRequestDispatcher("index2.jsp").forward(request, response);//请求跳转
输出结果:
   Hello World!//可以传值
~哈哈哈O(∩_∩)O哈哈哈~   //可以传值
  hello everybody!     //可以传值

7.Jsp中有9个内置对象:
request           请求对象          类型 javax.servlet.ServletRequest        作用域   Request
response       响应对象             类型 javax.servlet.SrvletResponse       作用域   Page
pageContext  页面上下文对象 类型 javax.servlet.jsp.PageContext      作用域   Page
session         会话对象              类型 javax.servlet.http.HttpSession      作用域   Session
application   应用程序对象       类型 javax.servlet.ServletContext          作用域    Application
out                  输出对象              类型 javax.servlet.jsp.JspWriter             作用域   Page
config             配置对象              类型 javax.servlet.ServletConfig            作用域   Page
page              页面对象              类型 javax.lang.Object                             作用域   Page
exception      例外对象              类型 javax.lang.Throwable                     作用域   Page
“exception”  对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用。
原创粉丝点击