最近很想写个程序web,奈何忘完了= =!重新学习中。不想再干net的运维了,和代码接触不到,小白白一个。接下来正题
先上一张工程截图
上面的工程图中工程叫springmvc
MVC(模型Model-视图View-控制器Controller)
其中Modelc层有5个包:
1、com.springmvc.dao包下面的UserDao类为数据库连接接口类
2、com.springmvc.dao.impl包下面的UserDaoImpl类继承重载了并实现UserDao接口类的方法进行数据库连接
3、com.springmvc.entit包下面的User类为数据库用户表对应的实体类
4、com.springmvc.service包下面的UserService接口类,为了获取数据库返回值
5、com.springmvc.service.impl包下面的UserServiceImpl类继承重载了并实现UserService接口类的方法进行数据业务逻辑操作view层为各种jsp等等
Controller层下有一个包
com.springmvc.controller包下面ViewController类为控制器,控制view传来的参数进行调用UserService接口类中的方法,进行登录。
再来一张运行图下来是代码段
ViewController控制器
package com.springmvc.controller;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import com.alibaba.fastjson.JSON;
import com.springmvc.service.UserService;
//import com.springmvc.dao.UserDao;
import com.springmvc.service.impl.UserServiceImpl;
import com.sun.accessibility.internal.resources.accessibility;
@Controller
public class ViewController {
@RequestMapping("/view")
public ModelAndView view(HttpServletRequest request) {
String path = request.getParameter("path") + "";
ModelAndView mav = new ModelAndView(); mav.setViewName(path);
return mav;
}
@Autowired
private UserService userService;
@RequestMapping(value = "/login")
public String login(@RequestParam("username") String username, @RequestParam("password") String password,
HttpSession session, Model model) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = userService.getUserList(username,password);
System.out.println(list);
} catch (Exception e) {
// TODO: handle exception
}
return "index";
}
}
UserDao接口类
package com.springmvc.dao;import java.sql.SQLException;
import java.util.List;
import java.util.Map;public interface UserDao { /* (non-Javadoc)
* @see com.springmvc.dao.BaseDao#ExecuteResultSet(java.lang.String)
*/
List<Map<String, Object>> ExecuteResultSet(String sql) throws SQLException; /*
* 更新操作
*/
/* (non-Javadoc)
* @see com.springmvc.dao.BaseDao#Execute(java.lang.String)
*/
void Execute(String sql);}
UserDaoImpl类
package com.springmvc.dao.impl;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;import org.springframework.stereotype.Service;
import com.springmvc.dao.UserDao;@Service
public class UserDaoImpl implements UserDao { private static String driverName;
private static String dbURL;
private static String userName;
private static String password;
private static Connection connection;
private static Statement statement; public static Connection getConnection() throws SQLException
{
Connection conn =null;
try {
Properties prop = new Properties();
prop.load(UserDaoImpl.class.getClassLoader().getResourceAsStream("DB.properties"));
driverName=prop.getProperty("jdbc.driverClass");
dbURL=prop.getProperty("jdbc.url");
userName=prop.getProperty("jdbc.username");
password=prop.getProperty("jdbc.password");
Class.forName(driverName);
conn =DriverManager.getConnection(dbURL, userName, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
} /*
* 释放资源
*/
public static void releaseResources(ResultSet resultSet, Statement statement, Connection connection) {
try {
if (resultSet != null)
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
resultSet = null;
try {
if (statement != null)
statement.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
statement = null;
try {
if (connection != null)
connection.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
connection = null;
}
}
} } /* (non-Javadoc)
* @see com.springmvc.dao.BaseDao#ExecuteResultSet(java.lang.String)
*/ @Override
public List<Map<String,Object>> ExecuteResultSet(String sql) throws SQLException {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
ResultSet rs=null;
try {
connection = getConnection();
statement = connection.createStatement();
rs = statement.executeQuery(sql);
ResultSetMetaData m=rs.getMetaData();
int count=m.getColumnCount();
while (rs.next()) {
Map<String,Object> rowData=new HashMap<String, Object>();
for (int i = 1; i <= count; i++) {
Object value=rs.getObject(i)==null?"":rs.getObject(i);
rowData.put(m.getColumnName(i), value);
}
list.add(rowData);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
releaseResources(rs, statement, connection);
}
return list;
} @Override
public void Execute(String sql) {
try {
connection = getConnection();
statement = connection.createStatement();
// 可执行创建、修改、删除表,添加、删除、修改元组以及查询sql语句
statement.execute(sql);
ResultSet ResultSet= statement.getResultSet();
ResultSetMetaData rsmd = ResultSet.getMetaData(); int columnCount = rsmd.getColumnCount();
//迭代输出ResultSet对象 while (ResultSet.next()) {//依次输出每列的值
for (int i = 0 ; i < columnCount ; i++ )
{ System.out.print(ResultSet.getString(i + 1) + "/t"); }
System.out.print("/n"); }
} catch (SQLException e) {
e.printStackTrace();
} finally {
releaseResources(null, statement, connection);
}
}
}
User类
/*package com.springmvc.entit;public class User {
private Integer id;
private String username;
private String password;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}}
*/UserService类
package com.springmvc.service;import java.util.List;
import java.util.Map;public interface UserService { List<Map<String, Object>> getUserList(String username , String password);}UserServiceImpl类
package com.springmvc.service.impl;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.springmvc.dao.UserDao;
import com.springmvc.service.UserService;@Service
public class UserServiceImpl implements UserService { @Autowired
private UserDao userDao; @Override
public List<Map<String, Object>> getUserList (String username , String password) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = userDao.ExecuteResultSet("select * from users a where a.username = '" + username + "' and a.password='" + password + "';");
if (list != null && !list.isEmpty()) {
return "login";
}
} catch (Exception e) {
e.printStackTrace();
}
return list; }
}jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/baibaika?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong
jdbc.username = root
jdbc.password = rootDB.properties用来存mysql数据连接,需要注意的是,mysql5.0版本以上driverClass=com.mysql.cj.jdbc.Driver,url需要加入useSSL=false,此为服务器验证
我有些不懂的地方需要请教下各位大神:
1、UserServiceImpl类中getUserList实现方法中用list<Map<String, Object>>接受的数据库查询的返回,登录需要判断我是写再controller的对应方法中,还是就在getUserList方法中判断
2、实现中中都有@Service 这个注解,百度说是告诉接口这个是实现类?
3、@Autowired
private UserDao userDao;这个实例化的时候需要@Autowired?是启动的时候加载UserDao属性?还是加载这个类?相当于要想这么用,就必须加
4、@Override注解百度说复写基类方法的时候需要加上,一个提示作用,但是删除了报错,而且我写的是重载。不明白。
5、UserDaoImpl数据库连接库,总感觉怪怪的,是需要新添加一个类用来存放数据库连接方法,那现在UserDaoImpl类中是调用新增加的数据库连接类的方法,还是把数据库连接类设计成接口,UserDaoImpl类继承实现了2个接口UserDao,数据库连接类
6、我打开主页地址为http://localhost:8080/springmvc/view?path=login,通过controller的login方法ruturn “index”,跳转主页后,地址却成了,此时的真是页面确实index,是因为@RequestMapping(value = "/login")?造成的么,修改为/index确实有效,登录后跳转页面成了http://localhost:8080/springmvc/index,,而不是view?path=index,怎么解决这个问题
先上一张工程截图
上面的工程图中工程叫springmvc
MVC(模型Model-视图View-控制器Controller)
其中Modelc层有5个包:
1、com.springmvc.dao包下面的UserDao类为数据库连接接口类
2、com.springmvc.dao.impl包下面的UserDaoImpl类继承重载了并实现UserDao接口类的方法进行数据库连接
3、com.springmvc.entit包下面的User类为数据库用户表对应的实体类
4、com.springmvc.service包下面的UserService接口类,为了获取数据库返回值
5、com.springmvc.service.impl包下面的UserServiceImpl类继承重载了并实现UserService接口类的方法进行数据业务逻辑操作view层为各种jsp等等
Controller层下有一个包
com.springmvc.controller包下面ViewController类为控制器,控制view传来的参数进行调用UserService接口类中的方法,进行登录。
再来一张运行图下来是代码段
ViewController控制器
package com.springmvc.controller;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import com.alibaba.fastjson.JSON;
import com.springmvc.service.UserService;
//import com.springmvc.dao.UserDao;
import com.springmvc.service.impl.UserServiceImpl;
import com.sun.accessibility.internal.resources.accessibility;
@Controller
public class ViewController {
@RequestMapping("/view")
public ModelAndView view(HttpServletRequest request) {
String path = request.getParameter("path") + "";
ModelAndView mav = new ModelAndView(); mav.setViewName(path);
return mav;
}
@Autowired
private UserService userService;
@RequestMapping(value = "/login")
public String login(@RequestParam("username") String username, @RequestParam("password") String password,
HttpSession session, Model model) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = userService.getUserList(username,password);
System.out.println(list);
} catch (Exception e) {
// TODO: handle exception
}
return "index";
}
}
UserDao接口类
package com.springmvc.dao;import java.sql.SQLException;
import java.util.List;
import java.util.Map;public interface UserDao { /* (non-Javadoc)
* @see com.springmvc.dao.BaseDao#ExecuteResultSet(java.lang.String)
*/
List<Map<String, Object>> ExecuteResultSet(String sql) throws SQLException; /*
* 更新操作
*/
/* (non-Javadoc)
* @see com.springmvc.dao.BaseDao#Execute(java.lang.String)
*/
void Execute(String sql);}
UserDaoImpl类
package com.springmvc.dao.impl;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;import org.springframework.stereotype.Service;
import com.springmvc.dao.UserDao;@Service
public class UserDaoImpl implements UserDao { private static String driverName;
private static String dbURL;
private static String userName;
private static String password;
private static Connection connection;
private static Statement statement; public static Connection getConnection() throws SQLException
{
Connection conn =null;
try {
Properties prop = new Properties();
prop.load(UserDaoImpl.class.getClassLoader().getResourceAsStream("DB.properties"));
driverName=prop.getProperty("jdbc.driverClass");
dbURL=prop.getProperty("jdbc.url");
userName=prop.getProperty("jdbc.username");
password=prop.getProperty("jdbc.password");
Class.forName(driverName);
conn =DriverManager.getConnection(dbURL, userName, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
} /*
* 释放资源
*/
public static void releaseResources(ResultSet resultSet, Statement statement, Connection connection) {
try {
if (resultSet != null)
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
resultSet = null;
try {
if (statement != null)
statement.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
statement = null;
try {
if (connection != null)
connection.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
connection = null;
}
}
} } /* (non-Javadoc)
* @see com.springmvc.dao.BaseDao#ExecuteResultSet(java.lang.String)
*/ @Override
public List<Map<String,Object>> ExecuteResultSet(String sql) throws SQLException {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
ResultSet rs=null;
try {
connection = getConnection();
statement = connection.createStatement();
rs = statement.executeQuery(sql);
ResultSetMetaData m=rs.getMetaData();
int count=m.getColumnCount();
while (rs.next()) {
Map<String,Object> rowData=new HashMap<String, Object>();
for (int i = 1; i <= count; i++) {
Object value=rs.getObject(i)==null?"":rs.getObject(i);
rowData.put(m.getColumnName(i), value);
}
list.add(rowData);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
releaseResources(rs, statement, connection);
}
return list;
} @Override
public void Execute(String sql) {
try {
connection = getConnection();
statement = connection.createStatement();
// 可执行创建、修改、删除表,添加、删除、修改元组以及查询sql语句
statement.execute(sql);
ResultSet ResultSet= statement.getResultSet();
ResultSetMetaData rsmd = ResultSet.getMetaData(); int columnCount = rsmd.getColumnCount();
//迭代输出ResultSet对象 while (ResultSet.next()) {//依次输出每列的值
for (int i = 0 ; i < columnCount ; i++ )
{ System.out.print(ResultSet.getString(i + 1) + "/t"); }
System.out.print("/n"); }
} catch (SQLException e) {
e.printStackTrace();
} finally {
releaseResources(null, statement, connection);
}
}
}
User类
/*package com.springmvc.entit;public class User {
private Integer id;
private String username;
private String password;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}}
*/UserService类
package com.springmvc.service;import java.util.List;
import java.util.Map;public interface UserService { List<Map<String, Object>> getUserList(String username , String password);}UserServiceImpl类
package com.springmvc.service.impl;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.springmvc.dao.UserDao;
import com.springmvc.service.UserService;@Service
public class UserServiceImpl implements UserService { @Autowired
private UserDao userDao; @Override
public List<Map<String, Object>> getUserList (String username , String password) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = userDao.ExecuteResultSet("select * from users a where a.username = '" + username + "' and a.password='" + password + "';");
if (list != null && !list.isEmpty()) {
return "login";
}
} catch (Exception e) {
e.printStackTrace();
}
return list; }
}jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/baibaika?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong
jdbc.username = root
jdbc.password = rootDB.properties用来存mysql数据连接,需要注意的是,mysql5.0版本以上driverClass=com.mysql.cj.jdbc.Driver,url需要加入useSSL=false,此为服务器验证
我有些不懂的地方需要请教下各位大神:
1、UserServiceImpl类中getUserList实现方法中用list<Map<String, Object>>接受的数据库查询的返回,登录需要判断我是写再controller的对应方法中,还是就在getUserList方法中判断
2、实现中中都有@Service 这个注解,百度说是告诉接口这个是实现类?
3、@Autowired
private UserDao userDao;这个实例化的时候需要@Autowired?是启动的时候加载UserDao属性?还是加载这个类?相当于要想这么用,就必须加
4、@Override注解百度说复写基类方法的时候需要加上,一个提示作用,但是删除了报错,而且我写的是重载。不明白。
5、UserDaoImpl数据库连接库,总感觉怪怪的,是需要新添加一个类用来存放数据库连接方法,那现在UserDaoImpl类中是调用新增加的数据库连接类的方法,还是把数据库连接类设计成接口,UserDaoImpl类继承实现了2个接口UserDao,数据库连接类
6、我打开主页地址为http://localhost:8080/springmvc/view?path=login,通过controller的login方法ruturn “index”,跳转主页后,地址却成了,此时的真是页面确实index,是因为@RequestMapping(value = "/login")?造成的么,修改为/index确实有效,登录后跳转页面成了http://localhost:8080/springmvc/index,,而不是view?path=index,怎么解决这个问题
解决方案 »
- Spring2.5+Hibernate3.3+Struts1.3 集成开发无法访问index.jsp页面
- 请教一个关于网页数据抓取的问题
- jsf如何获取hibernate多表的值
- webservice 中遇到的字符集转换问题
- 急,急,急!各位大侠快来看!关于JAVA程序的演示问题?
- 在一个公司工作半个月了,我是不是能跳啊?
- 继续问,高分相送!
- 请问hibernate中,用query.list()和用session.find(query)有什么不同呢?
- 可不可以把jbuilder的错误检查去掉?我需要的时候再设置它检查
- 请问,怎样可以将JAVA文件编译成可执行文件?
- SpringBoot2 application.properties 设定上传大小后,某个接口上传大文件,如何例外
- AOP问题,烦恼我一天了!
2.开发中,一个service层,都是一个接口+一个实现类,@Service就是加在实现类上的,这个不用担心,反正我们工作的时候只要是给别人
调的都喊接口。
3.启动的时候加载
4.具体情况,具体分析吧
5.。不知道
6.得看你自己的映射处理器是怎么配置的,地址?后面是来传参数的吧,不是查找资源路径最后,找套好点订的视频看吧,基础打好点,找那种有名气点的培训结构的视频,淘宝啊,网站啊