Spring Boot默认不加载jsp,需要写上版本号。可以在maven仓库中查找对应的版本号。
还有就是Spring Boot对JSP支持不友好,特别是Spring Boot20以后,使用JSP模板引擎会遇到各种问题。一般使用thymeleaf(官方推荐使用的)、freemarker、Velocity等。
<dependency>
<groupId>javaxservlet</groupId>
<artifactId>javaxservlet-api</artifactId>
<version>310</version>
</dependency>
<dependency>
<groupId>javaxservletjspjstl</groupId>
<artifactId>jstl</artifactId>
<version>12</version>
</dependency>
添加依赖就行,像这样<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${jstlversion}</version>
</dependency>首先要考虑jsp的安全性,通常,jsp页面是放在web程序主目录下或子目录下的。就算用户没有登录,他仍然可以通过以前访问过的jsp路径访问到这些jsp,如果你的程序设计的不是很完善,当用户在这些jsp中提交时,很有可能插入很多错误的或无效的数据。
所以为了jsp的安全,可以有两种方式解决:
1、开发一个自定义标签,在标签中对当前用户是否登录做一个判断,这个判断应该很简单了,你的登录程序应该在用户成功登录后在session中放一些用户信息,所以这里的判断就是判断session中是否有用户信息,如果没有(用户未登录),return SKIP_PAGE(自定义标签中的一个功能)用来跳过整个页面,不要执行;如果有(用户已经登录),return EVAL_PAGE(自定义标签中的一个功能)继续执行页面中的内容。
现在就可以把这个自定义标签加入你的所有jsp页面的顶部,当用户没有登录来访问这些jsp,页面将显示空白。你也可以在自定义标签中修改一下,没有登录时跳转到登录页面去。
2、将所有jsp放到WEB-INF目录下或其子目录下。WEB-INF是应用服务器的安全目录,用户是无法通过url的方式访问到该目录下的任何内容的。但是服务器端的程序可以访问它们,比如Action。
在action中,你可以使用mappingfindForward()来跳转到这些WEB-INF下的jsp,当然你需要在struts- configxml中配置它们了,和配置一般的jsp路径类似,只是要加上/WEB-INF/page/xxxjsp这样的。
这种做法就是,用户在前台所有的访问都必须访问一个do,然后来到一个Action中,在Action中你可以做很多事情了,判断用户是否登录、初始化 jsp的各种数据等等,然后跳转到jsp去;用户在jsp中提交数据后又回到Action来。(参见 /Expert/TopicView3aspid=4767304中我的回答)
为了免去在每一个Action都要写一段判断用户是否登录的方法的麻烦,你可以做一个BaseAction,其他的Action都继承它。
大概类似这样,你可以扩展它:
public abstract class BaseAction extends Action {
public BaseAction() {
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
><%-- 下面的可能比较直观 --%>
<td>
<%
if("男"equals(stuse)){ //若是男生,则选中男生按钮
%>
<input type="radio" id="idw" name="sex" value="男" checked="checked" />男
<input type="radio" id="idw" name="sex" value="女" />女
<%
}else{ //否则,显示选中女生按钮
%>
<input type="radio" id="idw" name="sex" value="男" />男
<input type="radio" id="idw" name="sex" value="女" checked="checked" />女
<%
}
%>
<td>
如果你用 JSTL 的话,会简单的多。
而且,用JSTL代替Java脚本,会让代码看起来更美观大方,运行速度也比Java脚本快。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)