来源于《Java、javaEE软件工程师就业求职手册》
1 HttpServletRequest类的request对象:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器的数据。
2 HttpServletResponse类的response:代表响应对象,主要用于向客户端发送数据。
3 JspWriter类的out对象:主要用于向客户端输出数据,Out的基类是JspWriter。
4 HttpSession类的session对象:主要用来分别保存每个用户信息和会话信息。
5 ServletContext类的application对象:主要用于保存所有应用系统种的公有数据,它是一个共享的内置对象,即一个容器中的多个用户共享同一个application对象,只要服务不关闭,application对象就一直存在。
6 PageContext类的PageContext对象,管理网页属性,代表网页的上下文。PageContext对象的创建和初始化都是由容器自动完成的。
7 ServletConfig类的config对象:代码片段配置参数,用于servlet初始化的配置参数。
8 Object类的page对象:代表正在运行的jsp页面,page对象代表jsp页面编译后的servlet对象,page对象只能在当前的jsp范围内使用。
9 exception对象:处理jsp文件中的错误和异常,只有在出现错误的页面中才可用。 ......
1 javascript ,设置一个变量,只允许提交一次。
2 还是javascript,将提交按钮或者image置为disable
onsubmit="getElById('submitInput').disabled = true; return true;">
3 利用struts的同步令牌机制
利用同步令牌(Token)机制来解决Web应用中重复提交的问题,Struts也给出了一个参考实现。
基本原理:
服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。
if (isTokenValid(request, true)) {
// your code here
return mapping.findForward("success");
} else {
saveToken(request);
return mapping.findForward("submita ......
一般,在很多应用系统中,用户多次提交重复数据是一个很严重的问题,会导致应用系统中很多垃圾数据,在Struts中框架中,有TOKEN机制来防止用户提交重复数据,这是一个很好的办法,但是,TOKEN机制必须得用到html:form标签,我不喜欢用这个标签,我觉得是一个累赘,所以我去掉HTML:FORM标签,重新定义TOKEN机制,方法如下:
1、创新新类,TokenProcess
public class TokenProcessor {
private long privious;//上次生成表单标识号得时间值
private static TokenProcessor instance=new TokenProcessor();
public static String FORM_TOKEN_KEY="FORM_TOKEN_KEY";
private TokenProcessor(){
}
public static TokenProcessor getInstance(){
return instance;
}
&nbs ......
JSP/Servlet转发与重定向的区别
尽管HttpServletResponse.sendRedirect 方法和RequestDispatcher.forward 方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。
下面是HttpServletResponse.sendRedirect 方法实现的请求重定向与RequestDispatcher.forward 方法实现的请求转发的总结比较:
(1)RequestDispatcher.forward 方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。如果传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher 对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。
(2)调用HttpServletResponse.sendRedirect 方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用RequestDispatcher.forward 方法的请求转发过程结束后,浏 ......
JSP页面中一般有两类注释
1.html注释
形如<!--...................-->
它会同html标记一同发到客户端
2.jsp注释(3种)
形如<%--.............................--%>
它不会被发送到客户端,只用来注释服务器端的jsp文件,连jsp生成的servlet也没有注释进去,这也是大部分人使用的注释
形如<%//............................%>和形如<%/*................................................*/%>
它是服务器端的注释,但是会被转化成java的注释(//................和/*........................*/)并将其插入相应的jsp生成的servlet的相应位置 ......
JSP页面的三类基本元素
1.声明
形如
<%!
int a;
int add(int a,int b)
{
return a+b;
}
%>
声明元素<%!.....%>可在jsp页面中多次出现,但不嵌套,里面来声明页面变量和页面函数,来为整个页面使用,如同java类里面的类变量和类方法
2.代码
形如
<%
int a;
%>
里面是jsp的代码,如同函数内部,所定义的变量,虽然可以写入多个<%..%>,但是不能嵌套,并且一旦代码里定义变量,那么该代码以下的代码部分都能访问(有效),不管是不是在同一个<%.........%>内部
3.表达式
形如<%=a%>
其中a是变量或者常量,此语句将向客户端网页中输出a的值
......