L130201X1
springmvc实现超市管理系统的用户登录操作
在L1301的项目基础上进行改造实现
1、在resource目录下新建applicationContext-jdbc.xml,将spring的配置文件头拷贝进来后,加入以下代码后保存,代码主要是用于扫描指定包下面的文件,用于注解
<context:component-scan base-package="cn.smbms.service"></context:component-scan>
<context:component-scan base-package="cn.smbms.dao"></context:component-scan>
2、打开web.xml,配置以下代码
(1)配置指向spring配置文件的代码:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
(2)配置监听,搜索ContextLoaderListener拷贝其全限定名,这个监听实现了servletcontextlistener监听接口,可以在web容器启动的时候,去初始化spring容器,前提就是要在web.xml中去配置
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
3、springmvc-servlet.xml代码没有改动
4、改造dao层
在cn.smbms下新建dao文件夹,下面建立user文件夹,在user文件夹里面拷贝上UserDao.java和UserDaoImpl.java,在UserDaoImpl.java的类名前面加上@Repository注解
5、改造service层
在cn.smbms下新建service文件夹service,下面建立user文件夹,在user文件夹里面拷贝上UserService.java和UserServiceImpl.java,在UserServiceImpl.java的类名前面加上@Service注解,同时在private UserDao userDao;前面加上@Resource,
6、创建cn.smbms.controller层
UserController.java的代码如下:
@Controller
@RequestMapping("/user")
public class UserController{
private Logger logger=Logger.getLogger(UserController.class);
@Resource
private UserService userService;
//实现跳转到登陆页
@RequestMapping(value="/login.html")
public String login(){
logger.info("UserController welcome SMBMS============");
return "login";}//实现登录
@RequestMapping(value="/dologin.html",method=RequestMethod.POST)
public String dologin(@RequestParam String userCode,
@RequestParam String userPassword){//调用service方法,进行用户匹配
User user=userService.login(userCode, userPassword);
if(null !=user){//登陆成功 //页面跳转(frame.jsp)
return "redirect:/user/main.html";
}else{ //页面跳转(login.jsp)
return "login"; } }
@RequestMapping(value="/main.html")
public String main(){
return "frame"; }}
7、拷贝资源文件进入项目
(1)拷贝静态资源文件,calendar、css、images、js
(2)公共页面foot.jsp、head.jsp、frame.jsp、login.jsp
(3)工具包:cn.smbms.tools包含ConfigManager.java、Constants.java、Singleton.java、TestSingleton.java
(4)拷贝:BaseDao.java类
(5)拷贝数据库文件database.properties和日志文件log4j.properties
(6)拷贝数据库连接所需要的jar包mysql-connector-java-5.1.0-bin.jar
8、测试结果:输入正确的用户名和密码进入frame页面,错误进入dologin页面
9、在web的欢迎页面配置中配置
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
</welcome-file-list>
可将浏览器访问网址由
http://localhost:8080/L130101X1SpringMVC/user/login.html改为
http://localhost:8080/L130101X1SpringMVC/
L130203X1 Springmvc实现用户登录的页面session提示功能
1、改造UserController.java中代码为以下
@Controller
@RequestMapping("/user")
public class UserController{
private Logger logger=Logger.getLogger(UserController.class);
@Resource
private UserService userService;
//实现跳转到登陆页
@RequestMapping(value="/login.html")
public String login(){
logger.info("UserController welcome SMBMS============");
return "login";}//实现登录
@RequestMapping(value="/dologin.html",method=RequestMethod.POST)
public String dologin(@RequestParam String userCode,
@RequestParam String userPassword,
HttpSession session, HttpServletRequest request){
//调用service方法,进行用户匹配
User user=userService.login(userCode, userPassword);
if(null !=user){//登陆成功
session.setAttribute(Constants.USER_SESSION, user);
//页面跳转(frame.jsp)
return "redirect:/user/main.html";
}else{
//页面跳转(login.jsp),带出提示信息
request.setAttribute("error", "用户名或密码不正确");
return "login"; }}
@RequestMapping(value="/main.html")
public String main(HttpSession session){
if(session.getAttribute(Constants.USER_SESSION)==null){
return "redirect:/user/login.html";}
return "frame";}}
2、测试结果,登录成功有显示下午好! 系统管理员 , 欢迎你!登录失败:有显示用户名或密码不正确
L130203X2 使用springmvc实现页面效果的映射
1、在WebRoot下面新建statics文件夹,将calendar、css、images、js文件放入其中
2、打开springmvc-servlet.xml配置以下代码
<mvc:resources location="/statics/"
mapping="/statics/**"/>
3、调整页面中的样式引用路径
4、浏览器访问出现样式
L130204X1 测试局部的异常处理
1、在UserController.java中增加以下代码
@RequestMapping(value="exlogin.html",method=RequestMethod.GET)
public String exLogin(@RequestParam String userCode,
@RequestParam String userPassword){
logger.info("exLogin =========");
User user=userService.login(userCode, userPassword);
if(user==null){
throw new RuntimeException("用户名或者密码不正确");}
return "redirect:/user/main.html";}
@ExceptionHandler(value={RuntimeException.class})
public String handlerException(RuntimeException e,
HttpServletRequest req){
req.setAttribute("e", e);
return "error"; }
2、jsp目录下新建error.jsp,里面代码为
${e.message }
3、浏览器输入网址访问
http://localhost:8080/L130101X1SpringMVC/user/exlogin.html?userCode=admin&userPassword=123
4、结果浏览器输出:用户名或者密码不正确
L130204X2 测试全部的异常处理
1、注释掉UserController.java中的局部变量配置代码
@ExceptionHandler(value={RuntimeException.class})
public String handlerException(RuntimeException e,
2、进入springmvc-servlet.xml中配置全局变量设置
<bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.RuntimeException">error</prop>
</props>
</property>
</bean>
3、将error.jsp中的代码变更为
${exception.message }
4、浏览器访问
http://localhost:8080/L130101X1SpringMVC/user/exlogin.html?userCode=admin&userPassword=123
结果:用户名或者密码不正确
L130205X1 改造实现用户查询功能
SSJ--->springmvc,springjdbc
1、在UserController.java中增加以下代码
@RequestMapping(value="/userlist.html")
public String gerUserList(Model model,
@RequestParam(value="queryname",required=false) String queryUserName,
@RequestParam(value="queryUserRole",required=false) String queryUserRole,
@RequestParam(value="pageIndex",required=false) String pageIndex ){
logger.info("getUserList ---- > queryUserName: " + queryUserName);
logger.info("getUserList ---- > queryUserRole: " + queryUserRole);
logger.info("getUserList ---- > pageIndex: " + pageIndex);
int _queryUserRole = 0;
List<User> userList = null;
int pageSize = Constants.pageSize;//设置页面容量
int currentPageNo = 1; //当前页码
if(queryUserName == null){
queryUserName = "";}
if(queryUserRole != null && !queryUserRole.equals("")){
_queryUserRole = Integer.parseInt(queryUserRole);}
if(pageIndex != null){
try{currentPageNo = Integer.valueOf(pageIndex);
}catch(NumberFormatException e){
return "redirect:/user/syserror.html"; } }
int totalCount = userService.getUserCount(queryUserName,_queryUserRole); //总数量(表)
PageSupport pages=new PageSupport();
pages.setCurrentPageNo(currentPageNo);
pages.setPageSize(pageSize);
pages.setTotalCount(totalCount);
int totalPageCount = pages.getTotalPageCount();//总页数
if(currentPageNo < 1){ //控制首页和尾页
currentPageNo = 1;
}else if(currentPageNo > totalPageCount){
currentPageNo = totalPageCount; }
userList = userService.getUserList(queryUserName,_queryUserRole,currentPageNo,pageSize);
model.addAttribute("userList", userList);
List<Role> roleList = null;
roleList = roleService.getRoleList();
model.addAttribute("roleList", roleList);
model.addAttribute("queryUserName", queryUserName);
model.addAttribute("queryUserRole", queryUserRole);
model.addAttribute("totalPageCount", totalPageCount);
model.addAttribute("totalCount", totalCount);
model.addAttribute("currentPageNo", currentPageNo);
return "userlist";}
@RequestMapping(value="/syserror.html")
public String sysError(){
return "syserror"; }
2、将相关共用类拷贝进入工程
(1)cn.smbms.dao下新建role目录,拷贝RoleDao.java,RoleDaoImpl.java
(2)cn.smbms.pojo下拷贝Role.java
(3)cn.smbms.service下新建role目录,拷贝RoleService.java、RoleServiceImpl.java
(4)jsp下面拷贝userlist.jsp、rollpage.jsp,同时修改页面中的引用路径