java web项目创建
项目目录结构
创建Servlet类对象
servlet对象的创建和使用分两步
- 第一:定义servlet
- 第二:配置文件里web-inf/web.xml里声明servlet的处理路径或者使用注解处理
定义servlet
// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// 扩展 HttpServlet 类
public class HelloWorld extends HttpServlet {
private String message;
public void init() throws ServletException
{
// 执行必需的初始化
message = "Hello World";
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// 设置响应内容类型
response.setContentType("text/html");
// 实际的逻辑是在这里
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy()
{
// 什么也不做
}
}
配置servlet
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
通过注解配置
Servlet 3.0 中增加了注解支持,例如:@WebServlet、@WebInitParm 、@WebFilter 和 @WebLitener 等,这使得 web.xml 从 Servlet 3.0 开始不再是必选项了。下面我们对 @WebServlet 进行介绍。
servlet注解说明
servlet的重要说明
servlet的生命周期
注意:除了service方法servlet里还有doget,dopost方法,
- 一个servlet被访问时,它默认处理请求的是service方法,这个方法是在servlet接口中定义的。对于service方法,一般来说这个方法是不需要重写的,因为在HttpServlet中已经有了很好的实现,它会根据请求的方式,调用doGet,doPost以及其他的doXXXt方法,也就是说service是用来转向的,所以我们一般写一个servlet,只需要重写doGet或者doPost就可以了。
- 如果重写了service方法,那么servlet容器就会把请求交给这个方法来处理,倘若你重写的service方法没有调用doXXX,即使你在Servlet中又重写了其他doGet doPost等也是不会被调用的,因为Servlet的service被自动调用(就像init destory一样),所以如果你由于某种需要,需要重写service方法,并且更具不同的method调用doPost doGet等时,就要在末尾加上一句super.service(),这样就可以解决问题了。
servlet的重要对象
- HttpServletRequest对象
- HttpServletResponse对象
- Cookie对象
- HttpSession对象
- ServletContext对象,所有应用共享一个servletContext对象,是公共数据存储信息
session和cookie
- session是服务端记录访问者的id,并行把访问者id返回给客户端,下次客户端请求的时候会携带id,然后从session中取值
- cookie服务端不保存,直接由服务端发送给客户端保存,下次请求可以携带配合业务来完成相关验证或者数据获取
cookie保存了数据并且在客户端,而session保存的数据在服务端,客户端只有一个id
servlet页面跳转和重定向
- 页面转发:url不会发生变化,通过页面转发可以把请求数据做中间处理,然后转给其他的页面处理这些数据。
- 页面重定向:url发生变化,不会把当前servlet的数据转发。
JSP
JSP是对servlet的改编,本质还是servlet,只是编写方式发送了改变,servlet通过代码里写html封装返回,而JSP通过在html里写java代码来简化了html代码在java里书写的麻烦
JSP教程
JSP九大内置对象
对象 |
描述 |
---|---|
request |
HttpServletRequest 接口的实例 |
response |
HttpServletResponse 接口的实例 |
out |
JspWriter 类的实例,用于把结果输出至网页上 |
session |
HttpSession 类的实例 |
application |
ServletContext 类的实例,与应用上下文有关 |
config |
ServletConfig 类的实例 |
pageContext |
PageContext 类的实例,提供对JSP页面所有对象以及命名空间的访问 |
page | 类似于Java类中的this关键字 |
Exception |
Exception 类的对象,代表发生错误的JSP页面中对应的异常对象 |
jsp+servlet配合
servlet只提供接口服务,jsp编写页面,
- 使用页面跳转或者重定向技术和公共数据保存对象来完成数据的传递。
- 本质上还是servlet之间的转发
- 实现的jsp负责承担页面渲染工作
- 访问的时候是访问controller而不是jsp。
版权声明:本文为qq_37771209原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。