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,
目录
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的页面访问
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)