MyBatis+spring
MyBatis+Spring 集成完毕。
想实现与数据库用户的姓名密码对比的简单登录
单独写方法用Junit测试可以取到数据库里的数据。
测试读数据库代码如下:
ApplicationContext aContext = new FileSystemXmlApplicationContext( "WebRoot/WEB-INF/applicationContext.xml"); UserMapper userMapper = aContext.getBean(UserMapper.class); //调用userMapper方法 按名字实现数据库查询 user = userMapper.getUser("beer"); System.out.println("---" +userName ); System.out.println("---" +userPsw );
可以取到数据库的数据 对应 beer 999
但是放在业务逻辑中或(我)放在servlet中 报org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [D:Program FilesJavaTomcat 6.0binWebRootWEB-INFapplicationContext.xml]; nested exception is java.io.FileNotFoundException: WebRootWEB-INFapplicationContext.xml (系统找不到指定的路径。)
servlet中的代码如下:
package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationContext; importorg.springframework.context.support.FileSystemXmlApplicationContext; import com.sarnath.entity.User; import com.sarnath.entity.UserMapper; public class indexServlet extends HttpServlet { private User user; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ApplicationContext aContext = new FileSystemXmlApplicationContext( "WebRoot/WEB-INF/applicationContext.xml"); UserMapper userMapper = aContext.getBean(UserMapper.class); //调用userMapper方法 按名字实现数据库查询 user = userMapper.getUser("beer"); String userName = user.getName().toString(); String userPsw = user.getPsw().toString(); request.setCharacterEncoding("UTF-8"); String name = request.getParameter("userName"); String pwd = request.getParameter("psw"); // 生成页面的格式 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); if (userName.equals(name) && userPsw.equals(pwd)) { // out.print("<script>alert('恭喜你');window.location.href='/Mybatis_spring/success.jsp';</script>"); // new一个输出的对象 out.print("username:" + name + "<br/>"); out.print("password:" + pwd + "<br/>"); //显示从数据库中读取的数据 // out.print("oralce" + userName); out.flush(); out.close(); } else { // out.print("对不起用户名或密码不正确"); out.print("<script>alert('对不起');window.location.href='/Mybatis_spring/index.jsp';</script>"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
很是郁闷,为什么单测并没有路径错误,放在业务逻辑中就找不到路径。
因为刚接触 所以求大虾指点一二。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
同楼上
最佳实践是spring配置文件放到classpath里,而不是WEB-INF下。
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:/applicationContext.xml");
此问题 解决了 顺便跟大家分享下
因为用Junit做测试 所以必须 手动去加载 applicationContext.xml 文件
如果放在整个项目中跑 就没必要添加,applicationContext.xml 文件 配置后会自动加载!
所以有冲突。
可是junit测试有数据的啊,路径有问题的话是不是就应该报了呀?还是放在业务逻辑中 应该相应的换下路径?
绝对路劲和相对路劲的问题