一.JDBC+SpringMVC+Spring 登录功能
1.导相应的jar包
2.修改总配置文件web.xml
参考配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>springMVC</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
3.可以在WebRoot目录下创建一个statics,放js或则css,在配置文件中可以设置不拦截
4.创建resources,放入框架配置文件
applicationContext-jdbc.xml 参考配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--
使spring扫描包下的所有类,让标注spring注解的类生效
若扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
-->
<context:component-scan base-package="com.service"/>
<context:component-scan base-package="com.dao"/>
</beans>
applicationContext-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
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.xsd">
<context:component-scan base-package="com.controller"/>
<!-- 设置该文件夹目录下的不进行拦截 -->
<mvc:annotation-driven/>
<mvc:resources mapping="/statics/**" location="/statics/" />
<!-- 完成视图的对应 -->
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
5.写实体类
6.写工具类,可以把JDBC写成静态常量
参考代码:
Const:
public class Const {
public static final String DRIVER="com.mysql.jdbc.Driver";
public static final String URL="jdbc:mysql://127.0.0.1:3306/supermarket?useUnicode=true&characterEncoding=utf-8";
public static final String USER="root";
public static final String PASSWORD="root";
}
DbHelper:
public class DbHelper {
//连接数据库方法
public static Connection getConnection(){
Connection conn =null;
try {
Class.forName(Const.DRIVER);
conn = (Connection) DriverManager.getConnection(Const.URL,
Const.USER, Const.PASSWORD);
} catch (Exception e) {
// TODO: handle exception
}
return conn;
}
//关闭资源
public static void closeAll(ResultSet rs,Connection conn,PreparedStatement ps){
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
7.写dao类,用于核查功能信息
com.dao:
@Repository("LianxiDao")
public class LianxiDao {
//验证登录信息
public boolean isLogin(int id,String model){
boolean flag =false;
PreparedStatement ps =null;
ResultSet rs = null;
Connection conn = DbHelper.getConnection();
String sql ="SELECT COUNT(1) FROM lianxi WHERE id=? AND model=?";
int count;
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.setString(2, model);
rs = ps.executeQuery();
rs.next();
count = rs.getInt(1);
if (count>0) {
flag=true;
}
} catch (Exception e) {
// TODO: handle exception
} finally{
DbHelper.closeAll(rs, conn, ps);
}
return flag;
}
//查询
public List<Lianxi> selectAll(){
List<Lianxi> list= new ArrayList<Lianxi>();
PreparedStatement ps =null;
ResultSet rs = null;
Connection conn = DbHelper.getConnection();
String sql ="SELECT * FROM lianxi ";
try {
System.out.println(sql);
ps = conn.prepareStatement(sql);
int i = 0;
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(i++);
Lianxi lianxi = new Lianxi();
lianxi.setId(rs.getInt(1));
lianxi.setModel(rs.getString(2));
lianxi.setOfprice(rs.getDouble(3));
lianxi.setOfDate(rs.getDate(4));
list.add(lianxi);
}
} catch (Exception e) {
// TODO: handle exception
}finally{
DbHelper.closeAll(rs, conn, ps);
}
return list;
}
//增
public int addLianxi(Lianxi lianxi){
int num = 0;
PreparedStatement ps =null;
Connection conn =null;
conn = DbHelper.getConnection();
String sql ="insert into lianxi values(?,?,?,?)";
try {
ps=conn.prepareStatement(sql);
ps.setInt(1,lianxi.getId());
ps.setString(2,lianxi.getModel());
ps.setDouble(3,lianxi.getOfprice());
ps.setObject(4,lianxi.getOfDate());
num = ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
}finally{
DbHelper.closeAll(null, conn, ps);
}
return num;
}
//AJAX
public Map<String,String> lianxiExis(String model){
Map<String,String> map = new HashMap<String, String>();
Connection conn = null;
PreparedStatement ps =null;
ResultSet rs = null;
String sql = "select * from lianxi where model=?";
int count = 0;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, model);
rs = ps.executeQuery();
rs.next();
count = rs.getInt(1);
} catch (Exception e) {
// TODO: handle exception
}
if (count>0) {
map.put("zq", "用户名正确");
}else {
map.put("cw", "用户名错误");
}
return map;
}
}
8.service类
com.service:
@Service
public class UserServices {
@Resource
public LianxiDao lianxiDao;
public LianxiDao getLianxiDao() {
return lianxiDao;
}
public void setLianxiDao(LianxiDao lianxiDao) {
this.lianxiDao = lianxiDao;
}
public boolean isLogin(int id,String model){
return lianxiDao.isLogin(id, model);
}
public List<Lianxi> selectAll(){
return lianxiDao.selectAll();
}
public int addLianxi(Lianxi lianxi){
return lianxiDao.addLianxi(lianxi);
}
public Map<String,String> lianxiExis(String model){
return lianxiDao.lianxiExis(model);
}
}
9.com.controller
@Controller
@RequestMapping("/userController")
public class UserController {
@Resource
private UserServices userServices;
public UserServices getUserServices() {
return userServices;
}
public void setUserServices(UserServices userServices) {
this.userServices = userServices;
}
//登录后显示查询页面
@RequestMapping("/login")
public String isLogin(@RequestParam("id")int id,@RequestParam("model")String model,HttpServletRequest request
,HttpServletResponse response,@ModelAttribute("lianxi")Lianxi lianxi){
boolean bb = userServices.isLogin(id, model);
if (bb) {
List<Lianxi> list = userServices.selectAll();
request.getSession().setAttribute("Lianxi",list);
return "cg";
}else{
return "sb";
}
}
//add验证
@RequestMapping("/addyanzheng")
public String yanzheng(@Valid Lianxi lianxi,BindingResult cuowu){
if (cuowu.hasErrors()) {
return "sb";
}else {
return "redirect:/userController/addLianxi";
}
}
/* @RequestMapping("addUser.html")
public String welcome(@ModelAttribute("lianxi")Lianxi lianxi){
return "redirect:/userController/addLianxi";
}*/
//增加
@RequestMapping("/addLianxi")
public String addLianxi(Lianxi lianxi,HttpServletRequest request
,HttpServletResponse response){
int num = userServices.addLianxi(lianxi);
if (num>0) {
List<Lianxi> list = userServices.selectAll();
request.getSession().setAttribute("Lianxi",list);
return "cg";
}else {
return "sb";
}
}
//AJAX
@ResponseBody
@RequestMapping("/ajax")
public String lianxiExis(@RequestParam("model")String model){
HashMap<String, String> map = (HashMap<String, String>) userServices.lianxiExis(model);
return JSONArray.toJSONString(map);
}
//AJAX跳转
@RequestMapping("/tiaozhuan")
public String tiaozhuan(){
return "zhuce";
}
}
10.jsp使用表单形式提交controller判断后跳转相应页面