利用spingmvc及servlet实现对url的地址去除后缀,更改后缀为html
2024-08-31 21:37:38
效果图
1.在web.xml中加上如下配置.其实就是利用servlet的目录过滤,这样所有带有news的地址都会被拦截
一定要放在.actiobn下面,否则springmvc会无法找到对应的controller
<!-- restfull风格约定,去除前台超链接访问的后缀 -->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/news/*</url-pattern>
</servlet-mapping>
2.在springmvc.xml中配置视图解析器
<!-- 视图解析器(jsp)-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property name="order" value="1"/> -->
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
3.接下来在你的controller中加入一个方法,我以newsController为例,增加一个go方法用于超链接的跳转
/*前台超链接跳转处理*/
@RequestMapping("/go/{name}")
public String go(@PathVariable String name) {
return name;
}
4.前台访问的地址
<li><a href="${pageContext.request.contextPath}/news/newsController/go/dataAnalysis">网站分析</a></li>
go后面传递的是页面的名称,这样即使我们传递dataAnalysis.html,只需要在上面的newsController的go方法中把后缀去掉,依然可以访问到正确的页面
(当然如果你用了拦截器自己放行就ok了)
拓展:首页的无后缀访问
首页是用户最先访问的一个页面,但我的首页不希望和普通的新闻页面一样带着news之类的字符串,实现方式也很简单
1.在web.xml中增加如下配置
<!-- 首页 -->
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping> <!-- 后台 -->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/manage</url-pattern>
</servlet-mapping>
说明:创建servlet生成的是以下映射,上面是为了实现我们自定义的地址能够映射到我们的servlet上
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>/IndexServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
2.创建servlet,在其中实现转发
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
} /**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
这样就ok了
最新文章
- Mac 可设置环境变量的位置、查看和添加PATH环境变量
- js基础知识梳理(最简版)
- RPC与hadoop
- 单片机联网需求攀升 WIZnet全硬件TCP/IP技术崛起
- php+MySQL+Ajax
- Linux部分命令使用记录(实时更新)
- Android Studio解决unspecified on project app resolves to an APK archive which is not supported
- 比特币钱包应用breadwallet源码
- 不同系统间传输float型数据
- MyEclipse开发WebService教程
- 教你50招提升ASP.NET性能(一):缓存是最后的手段
- [转]Oracle ORA-01403: no data found Exception SYS_REFCURSOR
- 驱动lx4f120h,头文件配置,没有完全吃透,望指点
- Navicat for mysql 导出sql文件 导入sql文件
- spring mvc 接受多对象的处置
- c#之Async、Await剖析
- ==与equals()方法的不同
- Dijkstra【迪杰斯特拉算法】
- 域名注册域名解析域名绑定 dns服务器解析 域名记录的添加 记录类型含义@ www 访问域名请求过程
- kafka中zookeeper的操作
热门文章
- datagridview合并相同单元格
- 宏的使用 extern
- 软件——机器学习与Python,if __name__ == &#39;__main__&#39;:函数
- CentOS 7 virt-manager 无法连接本地的hypervisor
- js进阶 12-15 jquery如何实现点击button显示列表,点击其它位置隐藏列表
- 像Bootstrap一样比较热门的前端框架有哪些
- 每日技术总结:vue router传参方式,js获取设备高度
- Shiro基础知识08----拦截器介绍(转)
- 3D 应用程序性能
- ibatis 开发中的经验 (三)Struts+Spring+Ibatis 开发环境搭建