一、JSP内置对象session、application与Servlet技术
1.内置对象session
session的作用域:当使用浏览器访问Web服务器时、会创建一次会话(即session)、我们可以向session中存储信息,而这些信息在我们断开服务器之前都是有效的。
-向session中存储数据
~~session.setAttribute(“key”,“value”);
-从session中获取数据
~~Object obj = session.getAttribute(“key”);
~~返回值类型为Object,需要强转成我们需要的类型。
2.内置对象application
application
是应用级别的对象,在整个应用程序拥有唯一作用域,如果存在多个session,则各个session之间公用一个application
-向application中存储数据
~~application.setAttribute(“key”,“value”);
-从application中获取数据
~~Object obj = application.getAttribute(“key”);
~~返回值类型为Object,需要强转成我们需要的类型。
3.Servlet技术
创建一个servlet
1)首先将开发透视图切换到Java EE
2)点击创建一个servlet
3)输入servlet名称
4)点击【Finish】
创建完成后、会在web.xml中自动生成servlet映射
--<servlet>与<servlet-mapping>是成对出现的
--如果包含多个servlet,两个<servlet-name>标签值相同的<servlet>与<servlet-mapping>为一对。如下:
<servlet>
<description></description>
<display-name>HelloServlet</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.FreeLee.Servlets.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloSetvlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
Servlet:
是server applet的组合,指运行在服务端的应用程序,servlet最广泛的应用是接收客户端表单请求,并给出响应。
可以在form表单action属性上指定servlet的映射名称,来请求目标servlet。
servlet使用请求转发和重定向两种跳转方式响应用户的请求。
二、JSP文件上传技术、文件写入数据表、页面相对路径
1.JSP文件上传
通过表单上传文件
--表单enctype属性设置为multipart/form-data
--使用<input type = " file "/>标签
--接收时会得到一个输入流,可根据需要将输入流写入目录
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
FileItemIterator iter = upload.getItemIteraort(request);
InputStream input = iter.next().openStream();
2.文件写入本地磁盘
使用FileOutputStream指向磁盘文件(例:Freelee)
FileOutputStream output = new FileOutputStream("c:/Freelee.doc");
byte[] buffer = new byte[512];
int length = 0;
whlie ((length = input.read(buffer)) > 0){
output.write(buffer,0,length);
}
output.close();
input.close();
3.文件写入数据库
使用setBinaryStream方法存储二进制数据
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql'//localhost:3308/mingtian10";
Connection conn = DriverManager.getConnection(url,"root","mysql");
String sql = "insert into mt(code,name,image) values (?,?,?)";
preparedStatement pstmt = conn.prepaerStatement(sql);
pstmt.setInt(1,100);
pstmt.setString(2,"zhangsan");
pstmt.setBinaryStream(3,input,input.available());
pstmt.execute();
4.上传文件显示的相对路径问题
上传文件后,需要使用相对路径将图片显示到页面
--request.getContextPath()获取项目根目录