spring--整合springMVC--01--JavaWeb基础--01--基础概念

一、JavaWeb三大组件

(1)Servlet

(2)Filter拦截器

(3)Listener监听器

二、WEB-INF目录

WEB-INF目录是受服务器保护的目录,不能直接通过浏览器访问其中的资源,经请求转发或映射后才可以访问该目录下资源

2.1 Servlet请求转发访问

(1)Servlet请求转发访问

web.xml配置

    <servlet>
        <servlet-name>myServlet2</servlet-name>
        <servlet-class>com.fuping3.servlet.Myservlet2</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>myServlet2</servlet-name>
        <!--/表示的路径为:http://ip:port/项目名-->
        <url-pattern>/servlet2</url-pattern>
    </servlet-mapping>
public class Myservlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Myservlet2...");
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/WEB-INF/js/myjs.js");
        requestDispatcher.forward(req,resp);
    }
}

(2)SpringMVC请求转发访问

SpringMVC配置文件找中须配置<mvc:default-servlet-handler />,否则HandlerMapping找不见映射报404

@Controller
public class TestForward {
    @RequestMapping("/testForward")
    public String testForward(){
        System.out.println("testForward...");
        return "forward:/WEB-INF/js/myjs.js";
    }
}

2.2 SpringMVC映射

<mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>
<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>

三、web 中斜杠的不同意义

在 web 中 / 斜杠 是一种绝对路径

3.1 / 如果被浏览器解析,得到的地址是: http://ip:port/

例一

<a href="/">斜杠</a>

例二:把斜杠重定向发送给浏览器解析, 得到 http://ip:port/

response.sendRediect(“/”)

3.2 / 斜杠 如果被服务器解析,得到的地址是: http://ip:port/工程路径

如下3个例子

1、 <url-pattern>/servlet1</url-pattern>
2、 servletContext.getRealPath(“/”);
3、 request.getRequestDispatcher(“/”);

四、web根目录下资源的访问

4.1 概念

web根目录下资源的访问,由Tomcat提供的DefaultServlet负责解析(对应配置为tomcat目录下conf/web.xml)

   <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

4.2 举例

web目录下:

(1)default.html页面,访问地址是       http://ip:port/工程路径/default.html

(2)my.jsp页面,         访问地址是      http://ip:port/工程路径/my.jsp     

4.3 springMVC开启Tomcat服务器的DefaultServlet,需要配置<mvc:default-servlet-handler />

五、模板引擎选型

参考:jsp、freemarker、velocity、thymeleaf模板引擎优缺点

六、web.xml

6.1 web.xml文件的作用及基本配置

参考:web.xml文件的作用及基本配置 - 简书

6.2 springboot中消失的web.xml

七、JavaWeb中统一异常处理【区别于SpringMVC统一异常处理】

        在 web.xml 中,可以通过40X/50X错误页面配置,将所有异常都统一交给 Tomcat, 让 Tomcat 展示友好的错误信息页面

<!--error-page 标签配置, 服务器出错之后, 自动跳转的页面-->
<error-page>
    <!--error-code 是错误类型-->
    <error-code>500</error-code>
    <!--location 标签表示。 要跳转去的页面路径-->
    <location>/pages/error/error500.jsp</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/pages/error/error404.jsp</location>
</error-page>

<error-page>
    <error-code>400</error-code>
    <location>/pages/error/error404.jsp</location>
</error-page>

说明:

(1)程序运行异常时,如果被Filter/Servlet等使用try-catch捕获处理时,tomcat捕获不到

package com.fuping3.filter;

import javax.servlet.*;
import java.io.IOException;

public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain
            filterChain) throws IOException, ServletException {
        try {
            filterChain.doFilter(servletRequest,servletResponse);
            JdbcUtils.commitAndClose();// 提交事务
        } catch (Exception e) {
            JdbcUtils.rollbackAndClose();//回滚事务
            e.printStackTrace();

            //如果需要使用error-page配置统一处理异常时,程序处理完业务后需要继续将异常抛出给Tomcat
            throw new RuntimeException(e);
        }
    }
}

(2)每个error-code都需要单独配置,例如400/404/500/502都需要单独配置,如下为实际项目中较为完整的配置

<error-page>
		<exception-type>java.lang.Throwable</exception-type>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
        <!--视图解析器异常,根据业务不同定制修改-->
		<exception-type>com.tts.framework.exception.ViewException</exception-type>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>400</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>404</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>403</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>405</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>406</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>408</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>409</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>410</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>500</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>501</error-code>
		<location>/error/error.html</location>
	</error-page>
	<error-page>
		<error-code>505</error-code>
		<location>/error/error.html</location>
	</error-page>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值