[面试题]
JAVA_HOME=JDK的根目录
CATALINA_HOME=tomcat的根目录
CATALINA-HOME\conf\server.xml:可以配置tomcat的端口,可以配置tomcat中下连接池。
CATALINA-HOME\common\lib:存放公用的类包
在My eclipse中如何配置tomcat
在eclipse中,选择windows->preference->MyEclipse->ApplicationServer->Tomcat
选择Tomcat 的安装目录,并选择TomCat所需的jdk,选择enable,确定即可。
jsp:include:在运行时调用另一个页面,变量是可以重复的。
<%@include file=””%>:在转译时合在一起,会成为同一个类,变量不可以重复。
forward: 转发,在下一个页面中,request保留上一个页面中的request的所有值
redirect: 跳转,不传递request对象。
Servlet
GenericServlet
HttpServlet
自定义
extends HttpServlet 并覆盖doPost或doGet方法
在web.xml中进行部署
Init
多次执行doGet或doPost
Destroy
对
脚本
<%%> <%=%> <%!%> <%----%>
指令
<%@page contentType=”text/html;charset=utf-8” language=”java” import=””%>
<%@include file=””%>
<%@taglib uri=”” prefix=””%>
动作:
Request request表示HttpServletRequest对象。取客户端表单域信息及cookie, header, 和session
response response表示HttpServletResponse对象,对客户端的响应返回文本、写cookies。
out out 向客户端打印html文本.
pageContext :当前jsp页面的上下文环境,可以得到session、request、application等内置对象,在自定义标签中使用的很多。
session session表示一个请求的javax.servlet.http.HttpSession对象。Session一个用户多个页面共享同一变量。
application applicaton 表示一个javax.servle.ServletContext对象。存放容器级的变量。
config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page page表示从该页面产生的一个servlet实例
exception:异常,当iserrorpage=true
页面需要保存以下参数:(数据库的分页及比较)
总行数:根据sql语句得到总行数
每页显示行数:设定值
当前页数:请求参数
页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,对结果集取出每页显示行数的行即可。
数据库:
Sqlserver:
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 页大小*(页数-1) id
FROM 表
ORDER BY id))
ORDER BY ID
--pageSize=5 页大小
--pageIndex=2 所要的页
--如果有主键可以,没以及键不行
select top 5 *
from aa where a1 not in
(select top 5 a1 from aa order by a1)
order by a1;
oracle:
select * from '||v_sql||' where rownum<'||
pageLastRow||'minus select * from '||v_sql
||' where rownum<'||pageFirstRow;
Session
先取出数据中的所有信息封装到对象并保存在session中,转发到jsp页面做如下处理。
a1 | a2 |
<%=aa.getA1()%> | <%=aa.getA2()%> |
<% if(currentPage!=1) { %> <% } if(currentPage!=pageCount) { %> <% } %>
|
<@include file>:在将jsp生成servlet类前将两个文件和在一起,生成一个java类,一起运行的。所以是一家子,当中的变量名不能重名。
转发: 保留上次的request
actionMapping.findForWard(“”);
pageContext.forward();
request.getRequestDispacher(“a.jsp”).forward(request,response)
跳转:不保留上次的request
Response.setRedirect(“”)
Jsp主要在于页面的显示动态生成页面,可以与html标记一起使用,其还是要生成为一个servlet。
Servlet:主要是控制的处理,如调用业务层,跳转不同的jsp页面。
Mvc:
Jsp:v
Servlet:c
Request.getparameter(“”)
<%=application.getRealPath("aa.jsp") %>
Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。
正常页面中
%@page erropage=”error.jsp”%
错误页面
<%@page iserrorpage=”true”%>
有一内置对象:exception
<%
New 类();
%>
做一个标记处理类 extends TagSupport
通过tld说明标记处理的类的前缀及后缀
在web.xml中说明tld文件
在jsp页面是引用tld<%@taglib uri=”” prefix=””%>
ServletContext:容器,放置全局变量
setAtribute()
getAttribute()
ServletConfig:一个servlet的配置
getInitParameter(”名称”)
HttpServletRequest:封装的所有的请求
getParameterValue(”名称”)
getParameterValues(”称”)
getSession();
getAttribute(” 名称”);
getRequestDispatch(”a.jsp”).forward(request,response)
HttpServletResponse:响应
getOut();
sendRedirect(””)
HttpSession:一个用户多个页面共享同一变量
setAttribute(””,””)
javax.servlet.*;javax.servlet.http.*;
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处理服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
在doGet及doPost方法前加入synchoronized
JSP:
<%@ page isThreadSafe="true"%>
setAttribute(String name,Object):设置名字为name的request的参数值
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的Body的长度
实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
Public String translate (String str) {
String tempStr = "";
try {
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
tempStr = tempStr.trim();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
return tempStr;
}
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()