MyBatis+spring

发布于 2021-11-10 20:19:40 字数 3022 浏览 837 评论 5

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

反话 2021-11-16 17:28:55

同楼上

狼亦尘 2021-11-16 16:39:54

最佳实践是spring配置文件放到classpath里,而不是WEB-INF下。

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:/applicationContext.xml");

离去的眼神 2021-11-16 15:16:50

此问题 解决了 顺便跟大家分享下

ApplicationContext aContext =   
new FileSystemXmlApplicationContext( "WebRoot/WEB-INF/applicationContext.xml");  

因为用Junit做测试 所以必须 手动去加载 applicationContext.xml 文件

如果放在整个项目中跑 就没必要添加,applicationContext.xml 文件 配置后会自动加载!

所以有冲突。

沙与沫 2021-11-16 13:10:30

可是junit测试有数据的啊,路径有问题的话是不是就应该报了呀?还是放在业务逻辑中 应该相应的换下路径?

灵芸 2021-11-15 21:42:11

绝对路劲和相对路劲的问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文