JAVA从零学re从零开始的JAVA学习03——<javaEE阶段三基础版>(需要完善)
day03 JAVAWEB四大域对象、jsp
一 Servlet
概念:Servlet 运行在服务端的Java小程序,是sun公司提供一套规范,用来处理客户端请求、响应给浏览器的动态资源。
Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener),且最重要。
1 <!-- demo01 servlet hello start 2 \3. 浏览器访问 在浏览器地址栏输入:http://localhost:8080/day14/hello 3 l 浏览器显示空白页面 4 5 l 控制打印信息 6 7 8 * <servlet> 注册servlet 9 10 <servlet-name> servlet名称,当前xml中唯一 11 12 <servlet-class> servlet实现类的全限定类名 13 14 * <servlet-mapping> 给注册的servlet添加映射路径 15 16 <servlet-name> 已经注册的servlet名称。注意:必须与注册的名称一致。 17 18 <url-pattern> 访问路径。要求:必须/开头 19 20 --> 21 22 <servlet> 23 24 <servlet-name>helloServlet</servlet-name> 25 26 <servlet-class>cn.itcast.demo01.a_servlet.HelloServlet</servlet-class> 27 28 </servlet> 29 30 <servlet-mapping> 31 32 <servlet-name>helloServlet</servlet-name> 33 34 <url-pattern>/hello</url-pattern> 35 36 </servlet-mapping> 37 38 39 <!-- demo01 servlet hello end -->
也可以使用注解来代替配置文件
方法:获取请求参数

小案例
使用Servlet完成一个用户登录的案例

Servlet的生命周期
何时创建:用户第一次访问Servlet创建Servlet的实例 (单实例)
何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.

大概了解

注解代替

二:ServletContext(四大域对象)
概念:ServletContext对象,tomcat为每一个web项目单独创建的一个上下文(知上知下贯穿全文)对象。服务器启动的 时候,
为每个WEB应用创建一个单独的ServletContext对象,我们可以使用这个对象存取数据,用这个对象存取的数据 可以在整个WEB应用中获得。
常用方法:




1 public class ReadFileServlet extends HttpServlet { 2 3 public void doGet(HttpServletRequest request, 4 5 HttpServletResponse response)throws ServletException, IOException { 6 7 ServletContext context = this.getServletContext(); 8 9 PrintWriter out = response.getWriter(); 10 11 InputStream in = context.getResourceAsStream("/WEBINF/classes/itcast.properties"); 12 13 Properties pros = new Properties(); 14 15 pros.load(in); 16 17 out.println("Company=" + pros.getProperty("Company") + "<br>"); 18 19 out.println("Address=" + pros.getProperty("Address") + "<br>"); 20 21 } 22 23 public void doPost(HttpServletRequest request, 24 25 HttpServletResponse response)throws ServletException, IOException { 26 27 this.doGet(request, response); 28 29 } 30 31 }
三 :Response
setStatus(int status)方法 设置状态码

解决中文输出乱码问题
在开发中,如果需要响应给浏览器中文数据,我们需要使用getWriter()方法,tomcat使用getWriter()处理字符时,
默认编码时ISO8859-1。响应给浏览器的数据,此时为乱码。在开发中我们需要使用setCharacterEncoding方法
来设置编码。此时响应给浏览器的数据为正常数据,但浏览器查看编码,可能使我们查看到内容仍为乱码,需要
使用 响应头 content-type进行设置。
// 设置HttpServletResponse使用utf-8编码,此数据提供给tomcat使用。
response.setCharacterEncoding("utf-8");
// 通知浏览器查看编码为utf-8
response.setHeader("Content-Type","text/html;charset=utf-8");
代替
response.setContentType("text/html;charset=utf-8");
(*)重定向

response.sendRedirect
// 1.接收参数 String filename = request.getParameter("filename"); // 2.完成文件下载: // 2.1设置Content-Type头 String type = this.getServletContext().getMimeType(filename); response.setHeader("Content-Type", type); // 2.2设置Content-Disposition头 response.setHeader("Content-Disposition", "attachment;filename="+filename); // 2.3设置文件的InputStream. String realPath = this.getServletContext().getRealPath("/download/"+filename); InputStream is = new FileInputStream(realPath); // 获得response的输出流: OutputStream os = response.getOutputStream(); int len = 0; byte[] b = new byte[1024]; while((len = is.read(b))!= -1){ os.write(b, 0, len); } is.close();
四 :Request
概念:在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求 消息。
由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分,因此,在HttpServletRequest接口中定 义了获取请求行、
请求头和请求消息体的相关方法,接下来,本节将针对这些方法进行详细地讲解


获取请求头信息的相关方法

获取请求参数

设置请求参数中文乱码问题 request.setCharacterEncoding("utf-8");
请求转发


request.setAttribute("company", "xxx有限公司");
RequestDispatcher dispatcher = request.getRequestDispatcher("/result");
dispatcher.forward(request, response)
JSP的简单使用
概念:JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java 代码共同存在,
其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。为 了与传统HTML有所区别,JSP文件的扩展名为.jsp。
实行原理

jsp写java代码的三种方式
<% 普通代码%>
<%! 方法或成员变量%>
<%=表达式%>
jsp的九大内置对象

封装JaveBean的第三方jar包BeanUtils
BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。
它可以给JavaBean封 装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。

Cookie和Session
会话技术

Cookie

@WebServlet(name = "CookieServlet1",urlPatterns = "/cookie1") public class CookieServlet1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建cookie Cookie cookie = new Cookie("username","tom"); //设置cookie的路径——浏览器根据这个路径判断那些cookie要发送给服务器 cookie.setPath("/day04"); //将cookie发送给浏览器 response.addCookie(cookie); } }


Session

原理

Session持久华 延长保存id的cookie的时间 自己默认是30分钟也可以延长

小案例:使用Session保存验证码信息
view

Controller



登入

Model

四大域对象
- SevletContext
- Session
- requset
- pageContext

浙公网安备 33010602011771号