新建一个maven项目
引入war包创建web工程,配置tomcat
导入以下依赖
spring-context Spring容器
spring-tx Spring 事务管理
spring-jdbc Spring-jdbc操作数据库的api
spring-webmvc 实现Spring MVC
mybatis 持久层框架
mybatis-spring spring整合mybatis
mysql-connector-java MySQL提供的JDBC驱动包
druid 实现数据库连接池
jsp-api jsp文件使用的api
javax.servlet-api 使用servlet
jstl-api JSP标准标记库
jackson-core
jackson-databind 实现数据的序列化和反序列化
jackson-annotation
创建项目框架目录
java下各个包的作用
config:进行jdbc,mybatis,拦截器配置
controller:匹配请求的URL并调用服务
domain:实体类,与entity包作用相似
intercepter:拦截器设置
mapper:操作数据库sql配置
service:服务包,提供实体类的一些操作
resources下包和文件的作用
mapper:进行数据库操作的xml配置
jdbc.properties:配置数据库连接信息
webapp包的作用
存放jsp,css,js,图片,视频等静态资源
部分功能实现
拦截未登录情况下对非登录页面的跳转
在Session在查看是否有USER_SESSION属性,如果没有则没有登录,跳转到登录页面
使用requestURL.indexOf()方法判断请求,排除不想被拦截的页面
package intercepter;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ResourceInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//如果用户已经登录直接放行
Object user=request.getSession().getAttribute("USER_SESSION");
if(user!=null){
return true;
}
//如果没有登录,我们判断是否访问的是登录相关功能,如果是,放行
String requestURL=request.getRequestURI();
if(requestURL.indexOf("login")>0){
return true;
}
if(requestURL.indexOf("toregister")>0||requestURL.indexOf("register")>0){
return true;
}
if(requestURL.indexOf("logout")>0){
return true;
}
//如果不是登录相关功能,需要跳转到登录页面
request.setAttribute("msg","请登录");
request.getRequestDispatcher("/admin/login.jsp").forward(request,response);
return false;
}
}
用户实体对数据操作配置
注意多个参数要使用@Param()标识,否则会错
package mapper;
import domain.User;
import org.apache.ibatis.annotations.*;
public interface UserMapper {
@Select("select * from users where user_email=#{email} and user_password=#{password} and user_status=0")
@Results(id="userResult",value = {
@Result(id=true,property="id",column="user_id"),
@Result(property="name",column="user_name"),
@Result(property="password",column="password"),
@Result(property="email",column="user_email"),
@Result(property="role",column="user_role"),
@Result(property="status",column="user_status"),
})
public User findUserByEmailAndPassword(User user);
@Update("update users set user_name=#{updatename} where user_id=#{id}")
public void updateName(@Param("updatename") String updatename,@Param("id")Integer id);
@Update("update users set user_role=#{updatephone} where user_id=#{id}")
public void updatePhone(@Param("updatephone")String updatephone,@Param("id")Integer id);
@Insert("insert into users (user_name,user_password,user_email,user_role,user_status) values (#{name},#{password},#{email},#{role},0)")
public void addUser(User user);
}
游戏查询控制层
package controller;
import domain.Game;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import service.GameService;
import javax.servlet.http.HttpServletRequest;
@Controller
public class GameController {
@Autowired
private GameService gameService;
@RequestMapping("/selectGame")
public String selectGame(String gamename, HttpServletRequest request){
System.out.println(gamename);
Game game= gameService.selectGame(gamename);
System.out.println(game.toString());
if(game==null){
//不存在此游戏
request.setAttribute("gameMsg","没有此游戏");
}else{
//存在此游戏
request.setAttribute("gameMsg","");
request.getSession().setAttribute("GAME_SESSION",game);
}
return "game";
}
}
页面展示