struts2:用戶登陸操作

用戶登陸:

分析:


編寫代碼:

1.編寫web層 創建UserAction

package cn.itheima.web.action;

import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.hibernate.criterion.DetachedCriteria;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import cn.itheima.domain.User;
import cn.itheima.service.UserService;
import cn.itheima.service.impl.UserServiceImpl;

public class UserAction extends ActionSupport implements ModelDriven<User> {

	private UserService us = new UserServiceImpl();
	private User user = new User();

	public String login() throws Exception {

		// 1調用service,傳遞參數 獲取User對象
		User u = us.login(user);
		// 2把User對象存到session域
		ActionContext.getContext().getSession().put("User", u);
		return "toHome";
	}

	public User getModel() {
		return user;
	}

}
2把UserAction配置到struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<!-- 指定struts2是否以開發模式運行
			1.熱加載主配置.(不需要重啓即可生效)
			2.提供更多錯誤信息輸出,方便開發時的調試
	 -->
	<constant name="struts.devMode" value="true"></constant>
	<package name="crm" namespace="/" extends="struts-default" >
		<global-exception-mappings>
			<!-- 如果出現java.lang.RuntimeException異常,就將跳轉到名爲error的結果 -->
			<exception-mapping result="error" exception="java.lang.RuntimeException"></exception-mapping>
		</global-exception-mappings>
		
		<action name="CustomerAction_*" class="cn.itheima.web.action.CustomerAction" method="{1}" >
			<result name="list" >/jsp/customer/list.jsp</result>
			<result name="toList" type="redirectAction">
	             <param name="actionName">CustomerAction_list</param>
	             <param name="namespace">/</param>
	         </result>
		</action>
		<action name="UserAction_*" class="cn.itheima.web.action.UserAction" method="{1}" >
			<result name="toHome" type="redirect">/index.htm</result>
			<result name="error" >/login.jsp</result>
		</action>
	</package>
	
</struts>
3編寫service層

package cn.itheima.service.impl;

import org.hibernate.Hibernate;

import cn.itheima.dao.UserDao;
import cn.itheima.dao.impl.UserDaoImpl;
import cn.itheima.domain.User;
import cn.itheima.service.UserService;
import cn.itheima.utils.HibernateUtils;

public class UserServiceImpl implements UserService {

	private UserDao ud = new UserDaoImpl();

	@Override
	public User login(User user) {
		
		//打開事務
		HibernateUtils.getCurrentSession().beginTransaction();
		//1.調用Dao根據登陸名稱查詢User對象
		User existU = ud .getByUserCode(user.getUser_code());
		//提交事務
		HibernateUtils.getCurrentSession().getTransaction().commit();
		
		if(existU==null){
			//獲得不到=>拋出異常提示用戶名不存在
			throw new RuntimeException("用戶名不存在!");
		}
		//2 比對密碼是否一致
		if(!existU.getUser_password().equals(user.getUser_password())){
			//不一致=>拋出異常提示密碼錯誤
			throw new RuntimeException("密碼錯誤!");
		}
		//3 將數據庫查詢的User返回
		return existU;
	}

}
4編寫dao層

package cn.itheima.dao.impl;

import org.hibernate.Query;
import org.hibernate.Session;

import cn.itheima.dao.UserDao;
import cn.itheima.domain.User;
import cn.itheima.utils.HibernateUtils;

public class UserDaoImpl implements UserDao {

	//根據用戶名獲取User
	public User getByUserCode(String user_code) {
		//HQL查詢
		//1獲取session
		Session session = HibernateUtils.getCurrentSession();
		//2創建HQl語句
		String hql ="from User where user_code = :user_code ";
		//3創建查詢對象
		Query query = session.createQuery(hql);
		//4設置參數
		query.setParameter("user_code", user_code);
		//5執行查詢
		return (User) query.uniqueResult();
		
		
	}

}
5編寫前端頁面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <!-- 導入struts2標籤庫 -->
<%@ taglib prefix="s" uri="/struts-tags" %>    
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/frameset.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<STYLE type=text/css>
BODY {
	FONT-SIZE: 12px; COLOR: #ffffff; FONT-FAMILY: 宋體
}
TD {
	FONT-SIZE: 12px; COLOR: #ffffff; FONT-FAMILY: 宋體
}
</STYLE>

<META content="MSHTML 6.00.6000.16809" name=GENERATOR></HEAD>
<BODY>
<FORM id=form1 name=form1 action="${pageContext.request.contextPath}/UserAction_login" method=post>

<DIV id=UpdatePanel1>
<DIV id=div1 
style="LEFT: 0px; POSITION: absolute; TOP: 0px; BACKGROUND-COLOR: #0066ff"></DIV>
<DIV id=div2 
style="LEFT: 0px; POSITION: absolute; TOP: 0px; BACKGROUND-COLOR: #0066ff"></DIV>


<DIV>   </DIV>
<DIV>
<TABLE cellSpacing=0 cellPadding=0 width=900 align=center border=0>
  <TBODY>
  <TR>
    <TD style="HEIGHT: 105px"><IMG src="images/login_1.gif" 
  border=0></TD></TR>
  <TR>
    <TD background=images/login_2.jpg height=300>
      <TABLE height=300 cellPadding=0 width=900 border=0>
        <TBODY>
        <TR>
          <TD colSpan=2 height=35></TD></TR>
        <TR>
          <TD width=360></TD>
          <TD>
            <TABLE cellSpacing=0 cellPadding=2 border=0>
              <TBODY>
              <TR>
                <TD style="HEIGHT: 28px" width=80>登 錄 名:</TD>
                <TD style="HEIGHT: 28px" width=150><INPUT id=txtName 
                  style="WIDTH: 130px" name=user_code></TD>
                <TD style="HEIGHT: 28px" width=370><SPAN 
                  id=RequiredFieldValidator3 
                  style="FONT-WEIGHT: bold; VISIBILITY: hidden; COLOR: white">請輸入登錄名</SPAN></TD></TR>
              <TR>
                <TD style="HEIGHT: 28px">登錄密碼:</TD>
                <TD style="HEIGHT: 28px"><INPUT id=txtPwd style="WIDTH: 130px" 
                  type=password name=user_password></TD>
                <TD style="HEIGHT: 28px"><SPAN id=RequiredFieldValidator4 
                  style="FONT-WEIGHT: bold; VISIBILITY: hidden; COLOR: white">請輸入密碼</SPAN></TD></TR>
              <TR>
                <TD style="HEIGHT: 28px">驗證碼:</TD>
                <TD style="HEIGHT: 28px"><INPUT id=txtcode 
                  style="WIDTH: 130px" name=txtcode></TD>
                <TD style="HEIGHT: 28px"> </TD></TR>
              <TR>
              	<!-- 加入提示錯誤信息:利用ognl取出棧中exception的錯誤信息 -->
                <TD style="HEIGHT: 18px" colspan="2" ><font color="red" ><s:property value="exception.message" /> </font></TD>
                <TD style="HEIGHT: 18px"></TD>
                <TD style="HEIGHT: 18px"></TD></TR>
              <TR>
                <TD></TD>
                <TD><INPUT id=btn 
                  style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" 
                  type=image src="images/login_button.gif" name=btn> 
              </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD><IMG src="images/login_3.jpg" 
border=0></TD></TR></TBODY></TABLE></DIV></DIV>
<!-- 顯示valuestack -->
<s:debug></s:debug>

</FORM></BODY></HTML>





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章