- 开始填坑了哈,这个东西其实还不完整,但是如果再不写的话,前面那些坑可能要开始忘了,那就先写着吧,各位如果有啥建议欢迎给我提,一起进步。
- 源码在这
- 这个项目我给他起了个名字--猫眼,哈哈,也就是一时兴起,给了它个名字,它的作用是使用struts框架加数据库建立一个小网站,客户在进行登录之后,可以输入一个事先准备好的“动漫之家”网中某一个漫画的网址,然后服务器就会去爬去这个 漫画的内容,打包之后返回给用户。
- 简短洁说,现在来把我踩的坑分享给各位。
- 第一步,我最先做的是用户登录这一块,用的是微软的sqlserver数据库(以前做数据库用的是mysql,但是都得接触接触是吧)和struts2(其实说白了这个项目就是struts2练手)。
- 首先呢得安装数据库。这是数据库的安装过程。
- 其次呢是让java能够使用sqlserver。实现的思路是这样的,这个在前面也有说过,就是java加载sqlserver驱动,然后输入用户密码 ,就可以了。具体是这样操作的。
- 先得获得数据库驱动,驱动在这里。
- 下载之后将驱动添加到项目的lib
- 输入测试代码
import java.sql.*; import java.util.HashMap; import java.util.Map; /** * Demo SearchNameAndPass * * @author lin * @date 2018/11/22 */ public class SqlTest { public static void main(String[] srg) { String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=homework_Submit_System"; //连接服务器和数据库test String userName = "root"; //默认用户名 String userPwd = "123456"; //密码 Connection dbConn; try { Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, userName, userPwd); System.out.println("Connection Successful!"); //如果连接成功 控制台输出Connection Successful! } catch (Exception e) { e.printStackTrace(); } } }
能成功看到输出的话就ok,可以继续下一步
-
因为这个访问数据库的功能是要在strut2里使用的,所以,要先新建一个struts2项目,具体怎么新建看前文,这里主要说明怎么在strus2里通过配置文件访问数据库,这涉及到一个知识点,资源文件的声明。
-
要知道在struts2里直接使用./initSql.properties呀,./initSql.ini呀,../initSql.properties,../initSql.ini,就算你在文件里“看到了”initSql.properties“的的确确在那里”,也是没有办法得到它的内容的。后来我的解决办法是在struts.xml里配置一个资源文件,也就是
<constant name="struts.custom.i18n.resources" value="initSql"/>
配置文件的名字就叫做iniSql.properties,内容为(具体什么是什么就不详细讲啦)
driver = com.microsoft.sqlserver.jdbc.SQLServerDriver url = jdbc:sqlserver://localhost:1433; DatabaseName=homework_Submit_System user = root pass = 123456
然后访问数据库的类是这样的,具体的讲解在代码里边
package action.dao; import com.opensymphony.xwork2.ActionSupport; import java.sql.*; import java.util.HashMap; import java.util.Map; /** * Demo SearchNameAndPass * * @author lin * @date 2018/11/22 */ public class SearchNameAndPass extends ActionSupport { private String driver; private String url; private String user; private String pass; /** 通过读取属性文件来获得属性 */ private void iniParam() throws Exception{ // 依次读取属性文件里的各种属性 driver = getText("driver"); System.out.println(driver); url= getText( "url"); user = getText("user"); pass = getText( "pass"); Class.forName(driver); } /** 在数据库中搜索匹配的用户名和密码。 */ public Map<String, String > search() throws Exception{ HashMap<String, String>nameAndPass = new HashMap<>(16); try( // PreparedStatement同样是通过Connection对象来或获得的。 // 具体的构造方法是将要执行的sql语句传进其构造方法里。但是要将具体的数据用?代替 // 然后再在具体执行sql语句的时候将?代替成具体的值 Connection connection = DriverManager.getConnection(url,user,pass); PreparedStatement preparedStatement = connection.prepareStatement(" select * from students ")) { ResultSet resultSet = preparedStatement.executeQuery(); //将在数据库中所有的账号密码存储在一个map中,以账号为键,密码为值 while (resultSet.next()) { nameAndPass.put(resultSet.getString("account"), resultSet.getString("password1")); } } return nameAndPass; } public SearchNameAndPass() throws Exception{ iniParam( ); } // public static void main(String []args) throws Exception{ // SearchNameAndPass preparedStatementTest = new SearchNameAndPass(); // preparedStatementTest.iniParam("E:\\homeWorkSubmitSystem\\homeWorkSubmitSystem\\param.ini"); // Map<String, String > nameAndPass = preparedStatementTest.search(); // System.out.println(nameAndPass.get("15363396874")); // } }
好了,数据库的配置就是这样,就是要记得要在配置文件里配置一下资源文件,配置文件所处的位置是在src文件夹下。
-
然后呢,如果其他类就这样直接访问数据库那封装信也太差了,需要做一下封装。
package action.dao; import java.util.Map; public class DbBean { private String name; private String pass; private String getName() { return name; } private void setName(String name) { this.name = name; } private String getPass() { return pass; } private void setPass(String pass) { this.pass = pass; } public DbBean(String name, String pass ){ setName(name); setPass(pass); } public boolean verifyLogin() throws Exception{ if(getName()==null || getPass() == null){ return false; } SearchNameAndPass searchNameAndPass = new SearchNameAndPass(); Map<String, String> nameAndPass= searchNameAndPass.search(); if(nameAndPass.get(getName()).equals(getPass())){ return true; } return false; } }
-
struts2小小项目 经验总结(1) 在sturt2里实现访问数据库
猜你喜欢
转载自blog.csdn.net/weixin_39452731/article/details/84885709
今日推荐
周排行