• java web: eclipse & maven & jetty & struts2 & mysql = 简单登录页面


    第一次接触java web开发,花费了一天半的时间,写了个简单的登录页面,以此文为记。

    开发工具

    Eclipse Luna Release (4.4.0) 已集成maven,maven目前的体会就是管理各种依赖

    jetty为maven提供的一个插件,类似tomcat

    struts2框架,MVC,action,jsp

    mysql server 5.6

    开发过程

    1. 新建Maven web工程

    Group Id: org.apache.maven.archetypes

    Artifact Id: maven-archetype-webapp

    2. 使用maven添加依赖及插件

    在pom.xml的<dependencies></dependencies>间添加,或者是右键工程选择Maven->Add Dependency

    jsp页面支持

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

    struts2

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.16</version>
    </dependency>

    mysql connector

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.31</version>
    </dependency>

    jetty

    为插件,在<plugins></plugins>间添加,或者是右键工程选择Maven->Add Plugin,接着在pom.xml中写配置

    <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.10</version>
        
        <configuration>
            <scanIntervalSeconds>10</scanIntervalSeconds>
            <stopKey>foo</stopKey>
            <stopPort>9999</stopPort>
        </configuration>
                    
        <executions>
            <execution>
                <id>start-jetty</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>run</goal>
                </goals>
                
                <configuration>
                    <scanIntervalSeconds>0</scanIntervalSeconds>
                    <daemon>true</daemon>
                </configuration>
            </execution>
            
            <execution>
                <id>stop-jetty</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>stop</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

    编译源码的插件

    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
    </plugin>

    注意plugin的层次

    <build>
        <plugins>
        <plugin>...</plugin>
        </plugins>
    </build>

    3. maven命令行

    网上搜索资料,得知命令mvn jetty:run,可以启动jetty。

    请教杨学长后,知道在Eclipse中,右键工程,选择run as中的run configurations,打开界面如下

    红框部分,即是maven命令输入的地方,如jetty:run

    4. struts2框架开发登录页面

    4.1 web.xml中添加struts2过滤器

    <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>/*</url-pattern>
    </filter-mapping>

    4.2 struts.xml中添加action

    <package name="struts2demo" namespace="/" extends="struts-default">
        <action name="Login">
            <result>login.jsp</result> 
        </action>
        
        <action name="Welcome" class="struts2demo.WelcomeUserAction">
            <result name="SUCCESS">welcome_user.jsp</result>
            <result name="ERROR">error.jsp</result>
        </action>
    </package>

    4.3 MVC

    V->login.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    
    <html>
    <head></head>
    
    <body>
      
      <s:form action="Welcome">
        <s:textfield name="username" label="Username"/>
        <s:password name="password" label="Password"/>
        <s:submit/>
      </s:form>
        
    </body>
    </html>

    M->WelcomeUserAction.java

    package struts2demo;
    
    import java.sql.*;
    
    public class WelcomeUserAction {
        //<s:textfield name="username"> you can get it from <s:property value="username">
        private String username;
        private String password;
        
        //get and set method for struts2 fill in
        //Username is the label name
        public String getUsername() {
            return username;
        }
        
        public void setUsername(String username) {
            this.username = username;
        }
        
        public String getPassword() {
            return password;
        }
        
        public void setPassword(String password) {
            this.password = password;
        }
        
        //"all struts logic here"
        public String execute() {        
            //
            try {
                Class.forName("com.mysql.jdbc.Driver");
                //System.out.println("Success loading Mysql Driver!");
            }
            catch (Exception e) {
                //System.out.println("Error loading Mysql Driver!");
                e.printStackTrace();
            }
            
            //
            try {
                Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/zrss", "root", "1234");
                
                String sql = "select * from user where name = ?";
                PreparedStatement ps = connect.prepareStatement(sql);
                ps.setString(1, username);
                ResultSet rs = ps.executeQuery();
                
                while (rs.next()) {
                    if (rs.getString("password").equals(password)) {
                        return "SUCCESS";
                    }
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            
            return "ERROR";
        }
    }

    C->forward to SUCCESS(welcome_user.jsp) or ERROR(error.jsp)

    5. 参考资料

    http://www.cnblogs.com/fnng/archive/2011/12/16/2290587.html maven的命令行使用

    http://www.mkyong.com/struts2/struts-2-hello-world-example/ struts2的一个简单例子

    http://freeshare.free4lab.com/resource?id=971 项目组开发环境

  • 相关阅读:
    Tomcat线程参数
    CDH平台规划注意事项
    python 不同数据类型的序列化
    Python 中__new__方法详解及使用
    线程生命周期
    如何在JAVA中每隔一段时间执行一段程序
    手动开启是事务提交回滚
    MySQL数据类型转换函数CAST与CONVERT的用法
    mybatis插入是返回主键id
    解决dubbo注册zookepper服务IP乱入问题的三种方式
  • 原文地址:https://www.cnblogs.com/hzhesi/p/3968522.html
Copyright © 2020-2023  润新知