用springMVC 返回一个指定的HTML页面的方法:
1、在controller层需要做返回指定:
@RequestMapping(value = "/jsptesthtml", method = RequestMethodGET)
public String jspTest(Model model) {
modeladdAttribute("account", accountServicegetAccount());
return "indextest";
}
2、在资源层放html文件
<bean id="viewResolver"
class="orgspringframeworkwebservletviewInternalResourceViewResolver">
<property name="viewClass"
value="orgspringframeworkwebservletviewJstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value="html" />
</bean>
3、对静态资源文件的访问
<mvc:resources location="/img/" mapping="/img/" />
<mvc:resources location="/js/" mapping="/js/" />
问题描述:比如有一个在线测试的页面,当用户提交页面之后,调到呈现测试结果的页面(这个页面中会给出参考答案之类的),这个时候就不能让用户再后退到之前的测试页面进行重新做题,然后提交了。有人可能会说,将用户做两次这样的情况放到服务器端的业务部分进行验证不就行了吗?这样是可以的,但是却增加了服务器端的负担(要先去数据库中查找相应的记录,然后再判断)。将这个功能尽量转移到客户端去做。下面是一些方法:
(1)
<scriptlanguage="JavaScript">
javascript:windowhistoryforward(1); //目前先用着这个
</script>
利用JS产生一个“前进”的动作,以抵消后退功能,这种方法应该是最简洁的,并且不需要考虑用户连点两次或多次“后退”的情况,缺点是当用户端禁用了JavaScript之后即失效。
(2)
<AHREF="logoutdo"onclick="javascript:locationreplace(thishref); eventreturnValue=false;">
Logout(Back Disabled)
</A>
这种方法用链接页面的URL替换了当前的历史纪录,这样浏览历史记录中就不会有本页面,后退按钮将不能回到本页面。用户点击“Logout”链接注销并执行新页面,这时当用户点击“后退”按钮将不能回到本页,而是回到在本页之前打开的那个页面。
也就是说,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录,这是该方法的一个缺点,当然可以在每一个业务页面都添加这段代码作为保护。另外,和上一种方法相同,当用户端禁用了JavaScript之后即失效。
3、
<scriptlanguage="JavaScript">
functionlogout()
{
windowclose(true);
windowopen("logoutdo");
}
</script>
<buttononClick="logout()">Logout</button>
这种方法比较偷懒,关掉浏览器再重新开,经过测试在视觉上几乎感觉不出来延时,同时又保证了后退按钮不可用(新窗口浏览器后退按钮为灰色),看起来似乎是个好方法,但缺点也比较明显:
首先,关闭和重开的浏览器窗口大小可能不同,用户可以明显看出这一过程,并且在一定程度上影响 *** 作。
其次,同上,这是一个JavaScript方法。
以上方法都是针对“后退”按钮作出的反应,客户端浏览器需要打开JavaScript代码,下面尝试从另一角度来解决这一问题:
4、禁止缓存
<%
responsesetHeader("Cache-Control", "no-cache");
responsesetHeader("Cache-Control", "no-store");
responsesetDateHeader("Expires", 0);
responsesetHeader("Pragma", "no-cache");
%>
这种方法使用服务器端脚本,强制浏览器重新访问服务器下载页面,而不从缓存读取,结合strutsjsp页面中的<logic>标签实现重新定向。
首先,你要在页面上触发事件,即点击编辑按钮时,触发一个click事件,向后台发送一个请求,这种js+ajax去做就行了。
其次,你要用Spring 来拦截这个请求,建议用注解的方式,在你要处理这个请求的方法上加上注解(处理请求的url),方法的参数就是你从页面上传的数据。这样你的请求就可以在后台处理了。
接下来,就是你要查询用户信息了,这些信息可能存在关系型数据库里,那就用sql去查。如果存在文件里,那就用流去读取文件。当然也可以存在NoSql中。这一步更加数据源的不同来处理了。
查到用户数据之后,经过处理,最后要以字符串的形式传到前台,建议用JSONObject格式化成JSON数据,这样前台处理方便些。
这只是大体过程,有细节不懂可以再细问。
springMVC的工作原理如下:
springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller
DispatcherServlet请请求提交到目标Controller
Controller进行业务逻辑处理后,会返回一个ModelAndView
Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
视图对象负责渲染返回给客户端。
与spring的关系:
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式。
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
核心容器:核心容器提供 Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。SpringDAO的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM的对象关系工具,其中包括JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和DAO异常层次结构。
Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE服务器中,大多数功能也适用于不受管理的环境。Spring的核心要点是:支持不绑定到特定 J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web或EJB)、独立应用程序、测试环境之间重用。
由此可以看出:Spring MVC 框架只是spring的一个子模块,用在java ee工程的web层组件。
以上就是关于如何用springMVC 返回一个指定的HTML页面全部的内容,包括:如何用springMVC 返回一个指定的HTML页面、springMVC 怎样处理 浏览器返回时重复提交表单、SpringMVC怎么从后台获取数据并显示在模态表上等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)