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(“/”);获取到这个目录
文件下载实现
protectedvoid 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 = newbyte[1024];
int len = 0;
while ((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
out.flush();
in.close();
}
}
压缩文件的下载
protectedvoid 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 = newbyte[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 = newbyte[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