Servlet
写控制语句
JSP
显示页面
Servlet
主要是 Contyol控制—控制用Contyol做~~ 用View显示给用户看。用JSP做-
MVC
模型视图控制
RequestDispatcher rd = Request.getRequestDispatcher(“”)
;
Rd.fo
对话用request保存 对话 一次 结束
发送响应 返回响应 则结束
Session
会话 会话关闭socket才会结束
<
servlet
>
<
servlet-name
>
BookListServlet
</
servlet-name
>
<
servlet-class
>
com.softeem.books.servlet.BookListServlet
</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
BookListServlet
</
servlet-name
>
<
url-pattern
>
/booklist
</
url-pattern
>
</
servlet-mapping
>
<
servlet
>
<
servlet-name
>
Bookservletupdate
</
servlet-name
>
<
servlet-class
>
com.softeem.books.servlet.Bookservletupdate
</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
Bookservletupdate
</
servlet-name
>
<
url-pattern
>
/bookupdate
</
url-pattern
>
</
servlet-mapping
>
XML
的配置
JSP
是一个特殊的
sevlet
JSP
调用
–jspservlet
方法
Servlet
调用
doGet
()
或
dopost
()方法
反射机制
通过
Class.forName()
变成对象
Class.forName()
返回
object
JSP
先解析
在编译
然后执行
Tomcat 是当JSP 有修改后。则在解析编译在执行否则执行上一次的.class
doGet()
<form>
数据需要提交。有两种选择
一
doGet() . dopost()
</form>
超连接使用
doGet()
提交
数据过多
使用
dopost()
提交
多次发送数据
doPost()
Servlet
里的方法
doGet()
doPost()
init()
当用户访问的第一次访问时被调用。(以后不调用,只调用一次)
Destyor()
当服务器关闭时调用
response.sendRedirect("booklist");
一次对话。一次请求一次响应。返回
null
RequestDispatcher rs = request.getRequestDispatcher("Book.jsp");
rs.forward(request, response);
多次会话
MVC
核心
C
。
<load-on-startup>1</load-on-startup> //
服务器启动则加载
init()
不然当第用户访问加载
init()
初始化
参数







































Web – inf
里面所有的东西都不能访问。
文件下载
<a href=”
文件名
.txt” >
文件下载
</a>
String path = this.getServletContext().getRealPath(“/”);
获取到这个目录
文件下载实现
protected
void
Press(HttpServletRequest request,
HttpServletResponse response)
throws
ServletException, IOException {
String filename = request.getParameter(
"filename"
);
String path =
this
.getServletContext().getRealPath(
"/"
);
//
获取当前tomcat路劲
response.setContentType(
"application/pdf"
);
File file =
new
File(path +
"//Web-inf//"
+ filename);
//
文件路劲
InputStream in =
new
FileInputStream(file);
response.addHeader(
"Content-Disposition"
,
"attachment;filename="
+filename);
//
给文件名字
response.setContentLength((
int
)(file.length()));
//
给文件长度
OutputStream out = response.getOutputStream();
byte
[] buff =
new
byte
[1024];
int
len = 0;
while
((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
out.flush();
in.close();
}
}
压缩文件的下载
protected
void
Press(HttpServletRequest request,
HttpServletResponse response)
throws
ServletException, IOException {
// String filename = request.getParameter("filename");
String path =
this
.getServletContext().getRealPath(
"/"
);
//
获取当前tomcat路劲
response.setContentType(
"application/zip"
);
File file =
new
File(path +
"//Web-inf//"
+
"SCSJ004-jSP-SERVLET.pdf"
);
//
文件路劲
InputStream in =
new
FileInputStream(file);
response.addHeader(
"Content-Disposition"
,
"attachment;filename="
+
"z.zip"
);
//
给文件名字
// response.setContentLength((int)(file.length())); //
给文件长度
OutputStream out = response.getOutputStream();
ZipOutputStream zout =
new
ZipOutputStream(out);
zout.putNextEntry(
new
ZipEntry(
"SCSJ004-jSP-SERVLET.pdf"
));
byte
[] buff =
new
byte
[1024];
int
len = 0;
while
((len = in.read(buff)) != -1) {
zout.write(buff, 0, len);
}
zout.flush();
in.close();
File file1 =
new
File(path +
"//Web-inf//"
+
"oracle.txt"
);
InputStream in1 =
new
FileInputStream(file1);
zout.putNextEntry(
new
ZipEntry(
"oracle.txt"
));
byte
[] buff1 =
new
byte
[1024];
int
len1 = 0;
while
((len1 = in1.read(buff1)) != -1) {
zout.write(buff1, 0, len1);
}
zout.flush();
in1.close();
zout.close();
}
}
会话
Session
用来记录 用户信息
不要过量使用,大量数据放到Session
<%@taglib
标签
“/Web-INF/
下放着
<%@taglib uri=
“标签所在路劲”
request.setCharacterEncoding(
"UTF-8"
);
//
解决乱码取出来时候使用
UTF-8
解决中日韩
问题
request.getSession().setAttribute("user", dto); //
使用
session()
存取判断用户
UserDTO dto = (UserDTO) request.getSession().getAttribute(
"user"
);
if
(dto ==
null
) {
RequestDispatcher rs1 = request
.getRequestDispatcher(
"login.jsp"
);
rs1.forward(request, response);
return
;
}
request.getRequestDispatcher()
是请求转发,前后页面共享一个request
response.sendRedirect()
是重新定向 前后页面不是一个request