java servlet配置_<JavaWeb>Servlet配置

一个Web应用程序的结构一般而言都如下图所示,

a0c5f870841b

webapp目录结构

首先是公共资源部份,即用户可以通过URL访问到的静态资源,通常包括前四个文件目录,即css,html,js和images。在使用这些资源的时候,要记得根据资源的类型进行分类,会显得更有条理。

Web应用一般还会包括一个META-INF目录,存放了架构包的源信息,定义了包扩展属性,类的加载路径等,还可以定义一些自定义属性。

Web应用的核心部分是WEB-INF目录,它是web应用的专用区,并不提供给用户,也无法通过URL访问到。在这个目录下存放的主要是类文件以及类所依赖的库,它主要包括classes和lib这两个子目录,其中classes目录中存放的主要是编译后的类文件以及编写的代码,lib目录存放的主要是web应用依赖的架包,比如说第三方库等。Servlet的核心配置文件,web.xml文件也存放在这个目录下。

Web.xml

Web.xml也被称作部署描述符,采用xml语法,主要是用来描述一个web应用,设置web应用程序的组件部署信息。

而对于Servlet容器来说,需要支持部署描述符中的所有元素。

今天所记录的所有元素,都属于web.xml文件。

Servlet声明

Servlet的声明依靠两个元素,分别是和元素,它们的结构如下:

名称

Servlet类的package路径

名称,要和上方的名字相同

对外映射的相对路径/url

映射路径可以有多个,指向同一个Servlet

路径支持模糊匹配,即/hello/*,所有的URL都会指向这个servlet

servlet-mapping在进行路径匹配时,按照从高到低的优先级规则进行匹配,直到匹配到为止。如果没有匹配到,就会返回错误信息。

匹配规则:

1.精确路径匹配,完全匹配

2.最长路径匹配,最长前缀匹配

3.扩展名匹配(如/admin.jsp)

4.default servlet(/)或者放弃匹配

需要说明的是,如果servlet的url是/hello,而请求url为/hello.jsp,并不会转发给/hello的servlet,而是给*.jsp的servlet,/hello/a.jsp才会给/hello的servlet。

ServletConfig配置

ServletConfig配置主要是用来存放固定的配置信息,以Servlet为单位,无法共享,配置也在Servlet元素当中。

配置名称key

配置值value

存放在哪个标签中,就属于哪个servlet。

ServletContext配置

ServletContext不依赖于Servlet,属于一个webapp,可以在多个Servlet之间共享。

Context名

Context值

由于ServletContext属于webapp,所以在层次上与标签属于同一层。

启动

默认情况下,Servlet会在第一次被请求时,才会加载到Servlet容器中,执行init方法,如果我们想要在Servlet容器启动时进行操作的话,需要进行一些配置。

0

它支持改变servlet的默认初始化时间,当load-on-startup的值大于等于0的时候,就表示Servlet容器在启动时,加载对应的Servlet,没有设置或者为负数时,采用默认设置。

当多个Servlet都设置了加载时间时,会按照值的大小,从小到大依次加载。

自定义错误界面

404//HTTP错误状态码

/404.html//跳转指定页面位置,路径相对于webapp目录

更高级的做法可以添加exception-type元素来捕获一个JAVA异常类型。当系统中出现了对应的异常,就会跳转到对应的界面。

请求访问中不包含servlet

如果我们请求了一个不包含特定servlet的界面,会跳转到index.html页面,即欢迎页面。

/index.html

MIME类型影射

MIME(Multipurpose Internet Mail Extensions),即多用途互联网邮件拓展类型。最初是为了标记邮件附件类型,后来拓展为一个描述消息类型的互联网标准,即描述一个特定的扩展名文件用特定应用程序打开。当特定扩展名的文件被访问时,浏览器会自动调用对应的应用程序去打开。

//对应扩展名文件映射类型

扩展名

mime标准

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解析代码 Model(模型) 创建一个名为Order的Java类,表示点菜信息: java public class Order { private String dish; public String getDish() { return dish; } public void setDish(String dish) { this.dish = dish; } } View(视图) 创建一个名为OrderView的JSP页面,用于展示点菜页面和结果: jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>点菜系统</title> </head> <body> <h1>点菜系统</h1> <form action="order" method="post"> <label for="dish">请选择菜品:</label> <select name="dish" id="dish"> <option value="鱼香肉丝">鱼香肉丝</option> <option value="宫保鸡丁">宫保鸡丁</option> <option value="红烧肉">红烧肉</option> </select> <input type="submit" value="提交"> </form> <h2>${message}</h2> </body> </html> Controller(控制器) 创建一个名为OrderController的Servlet,用于处理点菜系统的逻辑: java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class OrderController extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理GET请求,显示点菜页面 request.getRequestDispatcher("/order.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理POST请求,处理点菜逻辑 Order order = new Order(); order.setDish(request.getParameter("dish")); // 在这里可以将点菜信息保存到数据库或进行其他业务处理 request.setAttribute("message", "您点了:" + order.getDish()); request.getRequestDispatcher("/order.jsp").forward(request, response); } } 在web.xml文件中配置Servlet: xml <servlet> <servlet-name>OrderController</servlet-name> <servlet-class>OrderController</servlet-class> </servlet> <servlet-mapping> <servlet-name>OrderController</servlet-name> <url-pattern>/order</url-pattern> </servlet-mapping>
06-07

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值