我在Spring MVC Controller中以这种方式在会话中存储一个值:
@RequestMapping("usuario/getbyname")
public ModelAndView getByName(@ModelAttribute("user")Usuario user, HttpServletRequest request)
{
ModelAndView model=new ModelAndView();
request.getSession().setAttribute("username", "nouser");
model.setViewName("home");
return model;
}
然后,在JSP中:
Value in session: ${sessionScope.username}
但JSP中没有任何内容。我究竟做错了什么?谢谢。
编辑:
描述符(servlet-context.xml,root-context为空):
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<mvc:annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<!-- <beans:bean class="my.package.Controllers.LoginController"></beans:bean>-->
<beans:bean class="my.package.Controllers.NewUserFormController"></beans:bean>
<beans:bean class="my.package.Controllers.QueEsController"></beans:bean>
<beans:bean class="my.package.Services.UsuarioServiceImp"></beans:bean>
<beans:bean class="my.package.Dao.UserDaoImp">
<beans:property name="dataSource" ref="dataSource"></beans:property>
</beans:bean>
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver"></beans:property>
<beans:property name="url" value="jdbc:mysql://localhost:3306/myscheme"></beans:property>
<beans:property name="username" value="root"></beans:property>
<beans:property name="password" value="root"></beans:property>
</beans:bean>
<beans:bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<beans:property name="dataSource" ref="dataSource"></beans:property>
</beans:bean>
<context:component-scan base-package="my.package" />
</beans:beans>
控制器中的方法:
@RequestMapping("usuario/getbyname")
public ModelAndView getByName(@ModelAttribute("user")Usuario user, HttpServletRequest request){
Usuario userFromDB;
ModelAndView model=new ModelAndView();
userFromDB=usuarioService.getUserByName(user.nombre);
if(userFromDB==null){
request.getSession().setAttribute("username", "nouser");
model.setViewName("home");
return model;
}
if(user.getNombre().equals(userFromDB.getNombre())&& user.getPass().equals(userFromDB.getPass())){
model.addObject("login", "ok");
model.addObject("usuario", user.getNombre());
model.setViewName("home");
return model;
}else{
model.addObject("login", "nopass");
model.setViewName("home");
return model;
}
}
JSP的相关部分:
<form action="usuario/getbyname" method="post">
<table>
<tr>
<td>
<label class="textform">Nombre de usuario:</label>
</td>
<td>
<input type="text" name="nombre"/>
</td>
</tr>
<tr>
<td>
<label class="textform">Password:</label>
</td>
<td>
<input type="password" name="pass">
</td>
</tr>
<tr>
<td>
<input type="submit" value="Login">
</td>
<td class="textform">
<a href="<c:url value="/newuserform" />" >Regístrate</a>
<a href="<c:url value="/lostpass" />" >Recuperar contraseña</a>
</td>
</tr>
</table>
</form>
<P> The time on the server is ${serverTime}. </P>
<P> blablablablabla</P>
<p>Username: ${sessionScope.username}.
JSP位于webapp / web-inf / views
答案 0 :(得分:0)
我以不同的方式使用它(它工作正常):
@Component
@Scope (value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserSessionObject implements Serializable {
//PUT HERE YOUR VARIABLES
}
@Controller
@RequestMapping ("/product")
public class Advertise {
@Autowired
private UserSessionObject userSessionObject;
ModelAndView mv = new ModelAndView();
//DO YOUR CTL STUFF HERE
mv.addObject("session", userSessionObject);
return mv;
}
Spring必须选择这两个班级。
在JSP中,您可以使用$ {session.yourThing}