您的位置:首页 > 编程语言 > Java开发

struts2简单案例实现登录查询

2017-03-28 13:39 281 查看
这里默认已经下载好struts2,并且了解文件中的目录结构

步骤:

1、新建web项目:”struts2_usersys”

2、导入jar包



其中包括struts包,sevlet包,jsp包和数据库连接包

3、配置struts2的核心控制器web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

</web-app>


4、在src下添加struts2配置文件,命名为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>

<package name="user" namespace="/" extends="struts-default">
<action name="login" class="com.sun.action.UserAction" method="login">
<result name="success" type="redirectAction">list</result>
<result name="login">/login.jsp</result&
4000
gt;
</action>
<action name="list" class="com.sun.action.UserAction" method="list">
<result>/list.jsp</result>
</action>

</package>

</struts>


5、编写jsp文件login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="login.action" method="post">
用户名:<input type="text" name="user.name" />
密码:<input type="password" name="user.pwd" />
<input type="submit" value="提交" />
</form>
</body>
</html>


6、编写一个实体类User.java

package com.sun.entity;

public class User {
private int id;
private String name;
private String pwd;
public User() {
super();
}

public User(String name, String pwd) {
super();
this.name = name;
this.pwd = pwd;
}

public User(int id, String name, String pwd) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}


7、数据库连接公用类BaseDao.java

package com.sun.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
private Connection connection;
private PreparedStatement preparedStatement;
private ResultSet resultSet;
private void getConnection(){
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/usersys";
connection = DriverManager.getConnection(url,"root","123456");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public  void close(){
if(resultSet != null){
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(preparedStatement != null){
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null){
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//更新-----增加,修改,删除
public int executeUpdate(String sql,Object...objects){

try {
this.getConnection();
preparedStatement = connection.prepareStatement(sql);
if(objects != null){
for(int i=0;i<objects.length;i++){
preparedStatement.setObject(i+1, objects[i]);
}
}
return preparedStatement.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}
return -1;
}
//查询
public ResultSet executeQuery(String sql,Object...objects){
try {
this.getConnection();
preparedStatement = connection.prepareStatement(sql);
if(objects != null){
for(int i=0;i<objects.length;i++){
preparedStatement.setObject(i+1, objects[i]);
}
}
return resultSet = preparedStatement.executeQuery();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
/// this.close();
}
return null;
}
}


8、编写action类UserAction.java

package com.sun.action;

import java.sql.SQLException;
import java.util.List;

import com.opensymphony.xwork2.Action;
import com.sun.entity.User;
import com.sun.service.UserService;

public class UserAction {
private User user;
private List<User> list;
UserService userService = new UserService();

public String login() throws SQLException{
User temp = userService.login(user);
if(temp != null){
return Action.SUCCESS;
}
return Action.LOGIN;

}
public String list(){
list = userService.getList();
return Action.SUCCESS;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public List<User> getList() {
return list;
}

public void setList(List<User> list) {
this.list = list;
}
}


9、编写服务层类UserService.java

package com.sun.service;

import java.sql.SQLException;
import java.util.List;

import com.sun.dao.UserDao;
import com.sun.entity.User;

public class UserService {
private UserDao userDao = new UserDao();
public User login(User u) throws SQLException{
return userDao.login(u);
}
public List<User> getList(){
return userDao.getList();
}
}


10、编写数据连接层类UserDao.java

package com.sun.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.sun.entity.User;
import com.sun.util.BaseDao;

public class UserDao extends BaseDao{
public User login(User u) throws SQLException{
String sql = "select * from t_user where name = ? and pwd = ?";
System.out.println(u.getName()+u.getPwd());
ResultSet resultSet = this.executeQuery(sql,u.getName(),u.getPwd());
try {
if(resultSet.next()){
System.out.println("synaiyu");
return new User(resultSet.getInt(1),resultSet.getString(2
b18c
),resultSet.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.close();
}
return null;
}
public List<User> getList(){
String sql = "select * from t_user";
List<User> list = new ArrayList<>();
ResultSet resultSet = this.executeQuery(sql);
try {
while(resultSet.next()){
list.add(new User(resultSet.getInt(1),resultSet.getString(2),resultSet.getString(3)));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
this.close();

}
return list;
}
}


11、创建数据库



12、创建返回数据jsp list.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<table width=80% align=center>
<tr>
<td>id</td>
<td>姓名</td>
<td>密码</td>
</tr>
<c:forEach items="${list}" var="bean">
<tr>
<td> ${bean.id }</td>
<td> ${bean.name }</td>
<td> ${bean.pwd }</td>
</tr>
</c:forEach>

</table>
</body>
</html>


13、运行login.jsp



结果



我的目录结构



根据目录结构简单说一下struts2的执行流程:

首先通过login.jsp发起请求,给Tomcat服务器,Tomcat将请求给核心配置文件web.xml通过过滤器处理,解析struts.xml文件,通过action调用com.sun.action.UserAction.login.java方法,通过业务处理层访问数据连接层访问数据,访问到数据在返回给login方法,成功后转发给下一个action(list)处理,同样是通过业务处理层访问数据连接层访问数据,访问到数据在返回到list供前端做页面展示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: