400字范文,内容丰富有趣,生活中的好帮手!
400字范文 > javaweb成长之路:struts2的探索(一)

javaweb成长之路:struts2的探索(一)

时间:2019-06-16 08:47:37

相关推荐

javaweb成长之路:struts2的探索(一)

摘自于百度百科的一段话,仅供参考:

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

struts2的核心组成部分应该是属于他的拦截器了,客户端发送的请求都是需要经过处理器进行处理,其默认的拦截器主要有19个,本文中不讲述拦截器,主要是一个入门demo

下面来看一看demo(版本为struts-2.5.13),如图,创建一个web工程,名称为struts2_001,项目的目录结构是图中结构:

接下来,引入jar包:

下载地址:/s/1jHDMIEU 提取码: 9gmt

开始创建测试用表,这里是test数据库里的user表,创表脚本如下:

CREATE TABLE `test`.`user` (`u_id` INT NOT NULL AUTO_INCREMENT,`u_name` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL,`u_pwd` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL,`u_age` INT NOT NULL,`u_address` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL,PRIMARY KEY (`u_id`))ENGINE = InnoDBDEFAULT CHARACTER SET = utf8COLLATE = utf8_bin;INSERT INTO `test`.`user` (`u_name`, `u_pwd`, `u_age`, `u_address`) VALUES ('test1', 'test1', '20', '广东省深圳市');INSERT INTO `test`.`user` (`u_name`, `u_pwd`, `u_age`, `u_address`) VALUES ('test2', 'test2', '30', '江西省南昌市');

编写实体类模型,User.java:

package com.advance.model;public class User {private Integer uId;private String uName;private String uPwd;private Integer uAge;private String uAddress;public Integer getuId() {return uId;}public void setuId(Integer uId) {this.uId = uId;}public String getuName() {return uName;}public void setuName(String uName) {this.uName = uName;}public String getuPwd() {return uPwd;}public void setuPwd(String uPwd) {this.uPwd = uPwd;}public Integer getuAge() {return uAge;}public void setuAge(Integer uAge) {this.uAge = uAge;}public String getuAddress() {return uAddress;}public void setuAddress(String uAddress) {this.uAddress = uAddress;}}

数据库工具类,主要是jdbc连接mysql数据库。DbUtil.java:

package com.advance.util;import java.sql.Connection;import java.sql.DriverManager;public class DbUtil {private static final String className = "com.mysql.jdbc.Driver";private static final String url = "jdbc:mysql://localhost:3306/test";private static final String name = "root";private static final String pwd = "123456";static{try{Class.forName(className);}catch (Exception e){e.printStackTrace();}}public static Connection getConnection(){Connection conn = null;try{conn = DriverManager.getConnection(url,name,pwd);}catch (Exception e){e.printStackTrace();}return conn;}}

dao类,用来与数据库交互,UserDao.java:

package com.advance.dao;import com.advance.util.DbUtil;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;public class UserDao {public boolean doLogin(String name,String pwd)throws Exception{boolean flag = false;String sql = "select * from user where u_name=? and u_pwd=?";Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try{conn = DbUtil.getConnection();ps = conn.prepareStatement(sql);ps.setString(1,name);ps.setString(2,pwd);rs = ps.executeQuery();if(rs.next()){flag = true;}}catch (Exception e){e.printStackTrace();}finally {//别忘了关闭资源,后打开的先关闭if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(conn!=null){conn.close();}}return flag;}}

下一步,在web.xml中配置struts2,内容如下:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd"version="3.1"><filter><filter-name>struts-prepare</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareFilter</filter-class></filter><filter><filter-name>struts-execute</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts-prepare</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>struts-execute</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

接下来编写你的action类,这里是DemoAction.java:

package com.advance.action;import com.advance.dao.UserDao;import com.opensymphony.xwork2.ActionSupport;public class DemoAction extends ActionSupport{private UserDao userDao = new UserDao();//参数private String userName;private String userPwd;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPwd() {return userPwd;}public void setUserPwd(String userPwd) {this.userPwd = userPwd;}public String doLogin()throws Exception{if(userDao.doLogin(userName,userPwd)){return "loginSuccess";}else{return "loginErr";}}}

这里接受参数的方法是set方法,主要是由struts2的拦截器完成这部分功能。

get方法:传值到界面;

set方法:接收界面的值。

接下来是最重要的一步,struts2.xml文件,直接放置在src目录下。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""/dtds/struts-2.5.dtd"><struts><package name="loginDemo" namespace="/" extends="struts-default"><action name="login" method="doLogin" class="com.advance.action.DemoAction"><result name="loginSuccess" type="dispatcher">/index.jsp</result><result name="loginErr" type="dispatcher">/login.jsp</result></action></package></struts>

这是一个最简单的配置文件,内容很简单,主要部分就是package中的内容,它里面包含了多action。先讲一下package的几个属性:

name:也就是你的package名称,这个没有什么好说的

namespace:定义package命名空间 ,会影响你的访问路径,例如/advance那么访问是的地址为http://localhost:8080/struts2_001/advance/login

extends:也就是package继承的父类的名称,

再看看action的配置:

name:就是指你的请求名称,这里是login,在前台请求就是这个加上你的路径后缀啦(这里后缀没有,所以前台请求就是login

class:定义你的action类的全路径,下面的method将会从这里面定义的类中寻找,

method:在一个action中,继承了ActionSupport之后,默认的入口方法是execute,如果需要自定义,那就需要配置这个method,也就是说你请求的那个name最终会进入这个method定义的方法

还有是result的配置了:

name:这个name对应的是action方法中的返回值,决定你的方法执行完之后跳向何处

type:result类型不写则选用superpackage的typestruts-default.xml中的默认为dispatcher

result标签中的配置(如login.jsp):这里是定义跳向哪里。

前端界面:

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>login</title></head><body><br/><h1 style="width: 100%;text-align: center">Struts2 Login Demo</h1><br/><hr/><br/><br/><br/><br/><center><form action="login.action" method="post"><input name="userName" type="text"><br/><br/><input name="userPwd" type="password"><br/><br/><input type="submit" value="登录"></form></center></body></html>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>index</title></head><body><br/><h1 style="width: 100%;text-align: center">Struts2 Login Demo</h1><br/><hr/><br/><br/><br/><br/><p><h1>账号:${userName}</h1></p><p><h1>密码:${userPwd}</h1></p></body></html>

OK,上述步骤完成之后,就可以做一个小测试啦:

在浏览器中输入地址:http://localhost:8080/struts2_001/login

输入测试用账号:test1 密码test1,点击登录:

OK,到这里demo就做完了。

源码下载地址:/s/1o8FqLwm 提取码:zx5q

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。