IDEA中SSM项目的资源访问路径问题

目录

1.项目目录结构

2 url路径访问

2.1 路径地址分析

2.2 修改默认地址资源文件

2.3 修改默认地址栏

3 Controller页面导航

3.1 访问Controller层方法

3.2 Controller对页面进行访问


1.项目目录结构

我们主要关注webapp。

如上图,建议把js,css,layui,首页等文件放在WEB-INF外部,WEB-INF放程序的主要网页,index页面,welcome,各种管理页面等。

WEB-INF是安全目录Tomcat 默认的访问路径是WebRoot下的index.jsp,放在WEB-INF下的页面一般不配置是无法访问的,无法通过url访问。

2 url路径访问

2.1 路径地址分析

localhost:8080 这是主机和端口,可以tomcat配置中修改

daodao_war是war包名称,在tomcat配置中application context可以修改。

注意 localhost:8080/daodao_war/实际文件路径可以看成是webapp一致,即localhost:8080/daodao_war/为webapp的path,进而可以利用地址栏访问webapp下的资源文件,但是不能访问WEB-INF下文件

当默认配置的时候,tomcat启动时,默认打开此地址栏localhost:8080/daodao_war/。

此地址栏的实际跳转页面是,localhost:8080/daodao_war/index.jsp

即下图中webapp下的index.jsp。

这是默认跳转地址

2.2 修改默认地址资源文件

tomcat启动时,默认打开此地址栏localhost:8080/daodao_war/,打开的是webapp下的index.jsp

此时我想修改进入这个地址之后打开的不是index.jsp,而是webapp》WEB-INF》jsp》index.jsp,利用配置可以访问

则修改web.xml中的配置 <welcome-file-list>标签为/WEB-INF/jsp/index.jsp,(地址栏一切根目录是webapp)

<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!-- 此处也可以配置成 *.do 形式 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
  </welcome-file-list>

则下次登录默认地址栏时,显示的资源文件则是/WEB-INF/jsp/index.jsp

2.3 修改默认地址栏

tomcat启动时,默认打开此地址栏localhost:8080/daodao_war/

刚刚分析了地址栏的含义,现在我想修改地址栏,不想要项目名称daodao_war

则打开tomcat的配置,url一栏显示默认地址,可以通过更改端口,使其不是8080

通过更改application context配置为/,则默认地址栏不再显示项目名称daodao_war;

现在打开的默认地址栏为

3 Controller页面导航

WEB-INF是安全目录,放在WEB-INF下的页面一般不配置是无法访问的,无法通过url地址栏访问。

现在要访问WEB-INF下的jsp页面,就要通过controller导航显示。

3.1 访问Controller层方法

/**
 *@program: daodao
 *@description:
 *@author: mocas_wang
 *@create: 2020-09-11 09:12
 */


@Controller
@RequestMapping("/item")
public class itemController {

    @Autowired
    public itemService itemService;

    @RequestMapping("/getItemById/{itemId}")
    @ResponseBody
    public TbItem getItemById(@PathVariable long itemId)
    {
        TbItem tbItem=itemService.getItemById(itemId);
        return tbItem;
    }


        /*测试*/
    @RequestMapping("/test")
    public String test()
    {

        return "test";
    }


    /**
    *@Description: 查询分页数据
    *@Param: 
    *@return: 
    *@Author: mocas_wang
    *@date: 
    */
    @RequestMapping("/getItemList")
    @ResponseBody
    public EUDataGridResult getItemList(int page,int rows)
    {
        EUDataGridResult result=itemService.getItemList(page,rows);
        return result;
    }
}

访问方法要叠加requestMapping注解,即访问一个方法要在地址栏加入对类的注解,再加上对方法注解

例如要通过地址栏直接访问test,则在地址栏输入

localhost:8080/item/getItemList?page=1&rows=30

注意:localhost:8080是我设置默认访问地址,已经去掉了项目名称daodao_war,如果没有设置,则应该加上项目名称daodao_war。

?page=1&rows=30 则是get请求的请求参数,相当于给方法形参赋值。

如果对getItemById方法进行访问则是localhost:8080/item/getItemById/20200912

3.2 Controller对页面进行访问

放在WEB-INF下的页面一般不配置是无法访问的,无法通过url地址栏访问。

现在要访问WEB-INF下的jsp页面,就要通过controller导航显示。

/**
 *@program: daodao
 *@description:
 *@author: mocas_wang
 *@create: 2020-09-11 09:12
 */

@Controller
@RequestMapping("/item")
public class itemController {

    @Autowired
    public itemService itemService;

        /*测试*/
    @RequestMapping("/test")
    public String test()
    {

        return "test";
    }
    
}

例如test方法就是对test页面进行一次访问,具体看下test页面位置

具体可以看到test.jsp页面在WEB-INF》jsp》test.jsp

在地址栏不能访问,此时进行配置进行访问,在spring-mvc.xml中配置

<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
    </bean>

结合Controller方法进行解析

@RequestMapping("/test")
    public String test()
    {

        return "test";
    }
    

这样配置的意思,访问此方法时,return "test"即变成了访问前缀是/WEB-INF/jsp/,后缀是.jsp,的页面访问,结合起来就是跳转到/WEB-INF/jsp/test.jsp页面,这样就可以实现对页面的访问。

地址栏输入localhost:8080/item/test即实现了到达WEB-INF》jsp》test.jsp的页面访问

 

 

 

 

  • 11
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值